Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recordset / RecordsetClose pas mis à jour (suite)

3 réponses
Avatar
Vincent Lascaux
Bonjour,

Je rappelle le probleme auquel je suis confronté :

"Je veux afficher sur une feuille le nombre d'enregistrements disponibles
(comme ce qui est affiché en bas, le but étant seulement que ce soit plus
visible). Pour celà, j'ai mis le code suivant :
Private Sub Form_Current()
Dim rs As Recordset
Set rs = Me.RecordsetClone
MonEtiquette.Caption = CStr(rs.RecordCount)
End Sub

Apparemment, RecordsetClone n'est pas mis à jour lorsque l'evenement
d'activation est executé. A quel evenement puis je m'inscrire ?"

La solution qui avait été proposée était de rajouter un DoEvents en début de
Form_Current de facon à laisser à Access le temps d'executer la requete SQL
et de mettre à jour Me.RecordsetClone
Malheureusement, ca n'a pas l'air de fonctionner à tous les coups (sur une
machine lente ou chargée, ca ne fonctionne même jamais)...

--
Vincent

3 réponses

Avatar
3stone
Salut,

"Vincent Lascaux"
"Je veux afficher sur une feuille le nombre d'enregistrements disponibles
(comme ce qui est affiché en bas, le but étant seulement que ce soit plus
visible). Pour celà, j'ai mis le code suivant :
Private Sub Form_Current()
Dim rs As Recordset
Set rs = Me.RecordsetClone
MonEtiquette.Caption = CStr(rs.RecordCount)
End Sub

Apparemment, RecordsetClone n'est pas mis à jour lorsque l'evenement
d'activation est executé. A quel evenement puis je m'inscrire ?"

La solution qui avait été proposée était de rajouter un DoEvents en début de
Form_Current de facon à laisser à Access le temps d'executer la requete SQL
et de mettre à jour Me.RecordsetClone
Malheureusement, ca n'a pas l'air de fonctionner à tous les coups (sur une
machine lente ou chargée, ca ne fonctionne même jamais)...




Crée une étiquette que tu nomme "lblNavigate"
et place ce code dans l'événement "Form_Current"


If Me.NewRecord Then
Me!lblNavigate.Caption = "New Record"
Else
With Me.RecordsetClone
.MoveLast
.Bookmark = Me.Bookmark
Me!lblNavigate.Caption = "Record " & _
.AbsolutePosition + 1 _
& " of " & .RecordCount
End With
End If



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Vincent Lascaux
Crée une étiquette que tu nomme "lblNavigate"
et place ce code dans l'événement "Form_Current"


If Me.NewRecord Then
Me!lblNavigate.Caption = "New Record"
Else
With Me.RecordsetClone
.MoveLast
.Bookmark = Me.Bookmark
Me!lblNavigate.Caption = "Record " & _
.AbsolutePosition + 1 _
& " of " & .RecordCount
End With
End If


Ca a l'air de marcher. Il est probable que le MoveLast bloque l'execution
jusqu'à ce que la requête SQL ait été executée.

Merci

--
Vincent

Avatar
Jessy Sempere [MVP]
Bonjour

En fait pour que la valeur retourné par RecordCount soit correcte,
il faut parcourir entièrement le recordset avant d'où l'utilisation
de la méthode MoveLast...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Vincent Lascaux" a écrit dans le message news:
403d1ada$0$28457$
Crée une étiquette que tu nomme "lblNavigate"
et place ce code dans l'événement "Form_Current"


If Me.NewRecord Then
Me!lblNavigate.Caption = "New Record"
Else
With Me.RecordsetClone
.MoveLast
.Bookmark = Me.Bookmark
Me!lblNavigate.Caption = "Record " & _
.AbsolutePosition + 1 _
& " of " & .RecordCount
End With
End If


Ca a l'air de marcher. Il est probable que le MoveLast bloque l'execution
jusqu'à ce que la requête SQL ait été executée.

Merci

--
Vincent