OVH Cloud OVH Cloud

Un history dans mon formulaire

9 réponses
Avatar
Michel Pellegrini
Pourrait-on me donner quelques indications (comme
les fonctions à utiliser) pour que mon formulaire
ait toujours en mémoire, dans un tableau, les ID
des cinq derniers enregistrements sur lequel je suis
allé.

En cliquant sur un bouton une fois, je retournais
sur l'enregistrement précedent, cliquer une autre
fois m'enverrait sur l'enregistrement précédent
celui-là, jusqu'à cinq.

Un lien vers un site Web ferait l'affaire, si
quelqu'un a déjà placé un exemple sur son site.

Michel.Pellegrini@Enter-Net.com
Vercheres QC Canada

9 réponses

Avatar
Raymond [mvp]
bonjour.

il faut alimenter ton tableau à chaque événement Form_Current en décalant
les valeurs, et redécaler dans l'autre sens avec le bouton. Le problème
restant que lorsque tu remontes dans les enregistrements tu redéclenche un
form_Current et tu remémorises l'enregistrement en cours en tant que dernier
enregistrement lu (normal) et tu dois doubler les clicks pour remonter.
En première idée, mais tu modifieras pour ne pas cliquer 2 fois et tu
vérifieras les limites du tableau. Ce n'est qu'une idée seulement.

Dim Bks(20) As Variant

Private Sub Commande0_Click()
BK_Previous
End Sub
Private Sub Form_Current()
Bk_Next
End Sub

Private Function Bk_Next()
Dim I As Integer
For I = 19 To 0 Step -1
Bks(I + 1) = Bks(I)
Next I
Bks(0) = Me.Bookmark
End Function

Private Function BK_Previous()
Me.Bookmark = Bks(1)
Dim I As Integer
For I = 1 To 20
Bks(I - 1) = Bks(I)
Next I
Bks(20) = vbNullChar
End Function

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Michel Pellegrini" a écrit dans le
message de news:
Pourrait-on me donner quelques indications (comme
les fonctions à utiliser) pour que mon formulaire
ait toujours en mémoire, dans un tableau, les ID
des cinq derniers enregistrements sur lequel je suis
allé.

En cliquant sur un bouton une fois, je retournais
sur l'enregistrement précedent, cliquer une autre
fois m'enverrait sur l'enregistrement précédent
celui-là, jusqu'à cinq.

Un lien vers un site Web ferait l'affaire, si
quelqu'un a déjà placé un exemple sur son site.


Vercheres QC Canada




Avatar
Michel Pellegrini
(Raymond [mvp])
|> il faut alimenter ton tableau à chaque événement
|> Form_Current en décalant les valeurs, et redécaler
|> dans l'autre sens avec le bouton [...]

Ok, merci beaucoup.

J'étais en train de faire une affaire comme ça, mais
de façon laborieuse, en utilisant un paquet de variables
globales.

Je me doutais qu'il y avait un rapport avec la propriété
Bookmark, mais je suis embêté avec ça. L'aide ramène
toujours des termes que je ne comprends pas parfaitement :
ADO, DAO, Recordset,...


Vercheres QC Canada
Avatar
Raymond [mvp]
Dans ce cas précis, c'est du DAO et du recordset.
DAO c'est la méthode de gestion du recordset (transparent dans ce cas
précis) et le recordset c'est le jeu d'enregistrement fourni au formulaire
(la rerquête ou la table).

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Michel Pellegrini" a écrit dans le
message de news:
(Raymond [mvp])
|> il faut alimenter ton tableau à chaque événement
|> Form_Current en décalant les valeurs, et redécaler
|> dans l'autre sens avec le bouton [...]

Ok, merci beaucoup.

J'étais en train de faire une affaire comme ça, mais
de façon laborieuse, en utilisant un paquet de variables
globales.

Je me doutais qu'il y avait un rapport avec la propriété
Bookmark, mais je suis embêté avec ça. L'aide ramène
toujours des termes que je ne comprends pas parfaitement :
ADO, DAO, Recordset,...


Vercheres QC Canada




Avatar
Michel Pellegrini
(Raymond [mvp])
|> Dans ce cas précis, c'est du DAO et du recordset.
|> DAO c'est la méthode de gestion du recordset (transparent
|> dans ce cas précis) et le recordset c'est le jeu
|> d'enregistrement fourni au formulaire (la rerquête ou la
|> table).

Merci, ça a été lu et pris en note.

Si j'ai bien compris bien, Recordset est un mot abstrait
(ce n'est pas un mot-clé), c'est seulement une façon courte
de dire "le jeu d'enregistrement fourni au formulaire".


Vercheres QC Canada
Avatar
Raymond [mvp]
recordset = jeu d'enregistrements
c'est un objet access.
qu'il soit fourni à n'importe qui ou qu'il soit créé n'importe comment par
n'importe quelle méthode.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Michel Pellegrini" a écrit dans le
message de news:
(Raymond [mvp])
|> Dans ce cas précis, c'est du DAO et du recordset.
|> DAO c'est la méthode de gestion du recordset (transparent
|> dans ce cas précis) et le recordset c'est le jeu
|> d'enregistrement fourni au formulaire (la rerquête ou la
|> table).

Merci, ça a été lu et pris en note.

Si j'ai bien compris bien, Recordset est un mot abstrait
(ce n'est pas un mot-clé), c'est seulement une façon courte
de dire "le jeu d'enregistrement fourni au formulaire".


Vercheres QC Canada




Avatar
Michel Pellegrini
(Raymond [mvp])

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Dim Bks(20) As Variant

Private Function Bk_Next()
Dim I As Integer

For I = 19 To 0 Step -1
Bks(I + 1) = Bks(I)
Next I

Bks(0) = Me.Bookmark
End Function
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

- I part à 19, alors Bks(I + 1) = Bks(20)
- Il y a un Bks(0)

S'il y a un Bks(0) et un Bks(20), le tableau
est de dimension 21.

Vous avez déclaré un tableau de dimension 20:
Dim Bks(20) As Variant

Vous avez fait une erreur ou c'est moi qui se trompe ?


Vercheres QC Canada
Avatar
Michel Pellegrini
(Moi)
|> S'il y a un Bks(0) et un Bks(20), le tableau
|> est de dimension 21.
|>
|> Vous avez déclaré un tableau de dimension 20:
|> Dim Bks(20) As Variant
|>
|> Vous avez fait une erreur ou c'est moi qui
|> se trompe ?

Ok, il y a des exemples dans l'aide qui semble
faire la même chose.

Donc, en Basic, Dim Bks(20), ça signifie un
tableau de dimension 21, 0 à 20.

En C ou C++, ça veut dire un tabelau qui part
de 0 jusqu'à 19, utiliser Bks(20) annonce un
plantage.


Vercheres QC Canada
Avatar
Raymond [mvp]
J'ai fait ça vite fait sans contrôler, faut ajuster les limites comme j'ai
dit. dans ce cas précis, il faut travailler sur 0 à 19. Voir aussi si j'ai
mis les bons indices. C'était surtout l'idée à creuser.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Michel Pellegrini" a écrit dans le
message de news:
(Raymond [mvp])

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Dim Bks(20) As Variant

Private Function Bk_Next()
Dim I As Integer

For I = 19 To 0 Step -1
Bks(I + 1) = Bks(I)
Next I

Bks(0) = Me.Bookmark
End Function
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

- I part à 19, alors Bks(I + 1) = Bks(20)
- Il y a un Bks(0)

S'il y a un Bks(0) et un Bks(20), le tableau
est de dimension 21.

Vous avez déclaré un tableau de dimension 20:
Dim Bks(20) As Variant

Vous avez fait une erreur ou c'est moi qui se trompe ?


Vercheres QC Canada





Avatar
Michel Pellegrini
(Raymond [mvp])
|> J'ai fait ça vite fait sans contrôler, faut ajuster
|> les limites comme j'ai dit. dans ce cas précis, il
|> faut travailler sur 0 à 19. Voir aussi si j'ai
|> mis les bons indices.

Non, vous n'avez pas fait d'erreur, c'est comme ça
que ça fonctionne en Basic (ou du moins en VBA).

C'est marqué dans l'aide d'Access (le fichier Visual
Basic) sous la rubrique "Utilisation des tableaux"

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Dim curExpense(364) As Currency

« Par défaut, un tableau étant indexé à partir de zéro,
la limite supérieure de ce tableau est 364. »

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Donc, en Basic, le nombre entre parenthèses est la limite
supérieure du tableau (0 à 364), tandis qu'en C ou C++
c'est la dimension du tableau (0 à 363).

J'étais inquiet parce qu'écrire en dehors d'un tableau
va faire planter le programme. Ça peut être long à trouver
l'erreur.


Vercheres QC Canada