Bonjour.
J'ai un formulaire dont le recordsource est lié à un objet requête de ma base de données. Dans celui-ci j'ai les habituelles commandes de navigation [Premier, précédent, suivant et Dernier].
Mon souci c'est que, parfois, j'ouvre ce formulaire avec un filtre pour qu'il m'affiche un enregistrement en particulier. Et à ce moment, je souhaiterai désactiver les boutons de navigation. Donc dans l'idée, au chargement du formulaire, je teste combien d'enregistrements compte le recordset du formulaire comme ceci :
Eh bien, il s'avère que Me.Recordset.RecordCount vaut 1 au moment de vérifier la condition. Je le vois en mode d'exécution pas à pas... Puis la valeur du recordcount est mis à jour. Donc que mon formulaire ait un filtre ou pas, mes boutons de navigation sont toujours désactivés !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Private Sub Form_Load() If Me.Recordset.RecordCount < 2 Then CmdPremier.Enabled = False CmdPrecedent.Enabled = False CmdSuivant.Enabled = False CmdDernier.Enabled = False CmdNvFigurant.Enabled = False Else CmdPremier.Enabled = True CmdPrecedent.Enabled = True CmdSuivant.Enabled = True CmdDernier.Enabled = True CmdNvFigurant.Enabled = True End If End Sub
Avez-vous la solution (qui m'échappe) à ce problème ? Je pense pourtant être dans le bon événement du formulaire, quoique ?
Merci d'avance pour vos réponses.
Cordialement.
-- EDIT : solution trouvée --
Bon désolée pour le dérangement, j'ai trouvé la solution à mon problème http://www.pcreview.co.uk/forums/thread-1138627.php
En fait je suis sur l'enregistrement courant, et donc le recordset me renvoie 1 par rapport à celui-là. Pour que la propriété recordcount soit mise à jour, il me suffit de me déplacer jusqu'au dernier enregistrement du jeu :
Et à la fin je récupère la bonne valeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim nbEnreg As Integer nbEnreg = Me.Recordset.RecordCount If nbEnreg > 0 Then Me.Recordset.MoveLast Me.Recordset.MoveFirst End If nbEnreg = Me.Recordset.RecordCount
Du coup je met ma condition juste après et ça fonctionne déjà mieux.
A++
Partager