Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2011, 16h43   #1
Nouveau Membre du Club
 
Inscription : juin 2011
Messages : 93
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 93
Points : 28
Points : 28
Par défaut Recordset, findfirst, moveprevious, movenext

Je galère avec une technique élémentaire
J'ouvre un formulaire qui s'appuie sur une table
Sur l'événement ouverture, je déclare mon recordset
Code :
1
2
3
4
Dim dbmadb As DAO.Database
Set dbmadb = CurrentDb
Dim RecUser As DAO.Recordset
Set RecUser = dbmadb.OpenRecordset("TblUser", dbOpenDynaset
)

J'ai ajouté des boutons "Fiche précédente", "Fiche suivante" et une liste déroulante affichant les noms

Sur le bouton "Fiche précédente", je fais un RecUser.MovePrevious mais il ne reconnait pas mon recordset

Idem sur le bouton "Fiche suivante"

Sur l'événement "Après mise à jour" de ma liste déroulante, je veux afficher la fiche sélectionnée :
Code :
RecUser.FindFirst (RecUser!auto = me.activecontrol.column(1))
Mais qq chose m'échappe

Merci pour votre aide
fclus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 16h59   #2
Nouveau Membre du Club
 
Inscription : juin 2011
Messages : 93
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 93
Points : 28
Points : 28
J'ai avancé

Je déclare mon recordset uniquement sur "Fiche précédente" et "Fiche suivante"
Code :
1
2
3
set RecUser as DAO.RecordSet
RecUser = me.recordsetclone
RecUser.MoveNext
C'est ok

Mais mon FindFirst sur l'événement "après mise à jou" de ma liste déroulante ne marche pas
Code :
1
2
3
Dim RecUser As DAO.Recordset
Set RecUser = Me.Recordset
RecUser.FindFirst (RecUser!usauto = Me.CmbUser.Column(1))
fclus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 18h43   #3
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 086
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 086
Points : 11 622
Points : 11 622
Bonjour,

Je te conseille vivement de lire le tuto sur DAO avant de te lancer. La syntaxe de cette bibliothèque ne s'improvise pas !

Ceci par exemple c'est un peu n'importe quoi.

Code :
1
2
3
set RecUser as DAO.RecordSet
RecUser = me.recordsetclone
RecUser.MoveNext
il faut écrire ceci.

Code :
1
2
3
dim RecUser as DAO.RecordSet
set RecUser = me.recordsetclone
RecUser.MoveNext
Idem pour la syntaxe du findfirst.

Code :
RecUser.FindFirst (RecUser!usauto = Me.CmbUser.Column(1))
Un Findfirst est composé d'une condition Where valide. Soit un nom de champ à comparer à une valeur. Ici tu compare la valeur de contenu dans le champ usauto avec la valeur de la liste cmbuser.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 09h24   #4
Nouveau Membre du Club
 
Inscription : juin 2011
Messages : 93
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 93
Points : 28
Points : 28
Bonjour Fabrice

Merci pour ton aide
Ma syntaxe pour le moveprevious et movenext était correcte. J'ai glissé en la recopiant. J'aurais du faire un copier-coller

Par contre, pour le findfirst, c'est bien ce que je fais. je compare le champ usauto de ma table TblUser avec la 2ème colonne de ma liste déroulante CmbUser. Je ne vois pas ce qui coince
fclus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 11h09   #5
Nouveau Membre du Club
 
Inscription : juin 2011
Messages : 93
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 93
Points : 28
Points : 28
Mon findfirst fonctionne mais l'objectif est d'afficher l'enregistrement trouvé par le findfirst dans mon formulaire. Je reviens toujours sur le premier
fclus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 11h29   #6
Nouveau Membre du Club
 
Inscription : juin 2011
Messages : 93
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 93
Points : 28
Points : 28
J'ai finalement trouvé. Pour ceux que ça intéresse :

Code :
1
2
3
4
5
6
7
8
9
10
Dim rst As dao.Recordset
Set rst = Me.RecordsetClone
rst.FindFirst "usauto = " & Me.CmbUser.Column(1)
If rst.NoMatch Then
MsgBox "Enregistrement introuvable"
Else
Me.Bookmark = rst.Bookmark
End If
Set rst = Nothing
Me.CmbUser = Null
fclus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 11h32   #7
Nouveau Membre du Club
 
Inscription : juin 2011
Messages : 93
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 93
Points : 28
Points : 28
La suite pour se déplacer avec des boutons CmdPrevious et CmdNext :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub CmdNext_Click()
On Error GoTo erreur
DoCmd.GoToRecord , , acNext
erreur:
Select Case Err
Case 0
 
Case 2105
MsgBox "Fin de fichier atteint"
DoCmd.GoToRecord , , acLast
Case Else
MsgBox Err.Number & Chr(13) & Err.Description
End Select
End Sub
 
Private Sub CmdPrevious_Click()
 
On Error GoTo erreur
DoCmd.GoToRecord , , acPrevious
erreur:
Select Case Err
Case 0
 
Case 2105
MsgBox "Début de fichier atteint"
DoCmd.GoToRecord , , acFirst
Case Else
MsgBox Err.Number & Chr(13) & Err.Description
End Select
End Sub
fclus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 13h16   #8
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 086
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 086
Points : 11 622
Points : 11 622
Citation:
Envoyé par fclus Voir le message
J'ai finalement trouvé. Pour ceux que ça intéresse :
Ceux que ça interesse pourront consulter le tuto sur DAO.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h25.


 
 
 
 
Partenaires

Hébergement Web