VBA/Access valeur d'une recordset

vto -  
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis en train de créer un logiciel de gestion de clef et dans un formulaire je voudrais comparer le résulat de mon recordset avec la saisi d'une valeur(clef) dans une zone de liste. Ainsi si la valeur(clef) est la meme je pourrait récupérer le nombre d'exemplaire pour la clef.

Mon code :

Private Sub btn_NbExemplaire_Click()
Dim Reconnu As Boolean

Reconnu = False

Set cleBD = CurrentDb()
Req = "SELECT * From Clef;"
Set RScle = CurrentDb.OpenRecordset(Req)

Do While Not RScle.EOF
If RScle.Fields("cl_Libelle").Value = Me.zlCle.Value Then
MsgBox ("il y a" & RScle![cl_NbExemplaire] & " exemplaires")
Reconnu = True
GoTo Fin
End If
RScle.MoveNext
Loop

Fin:


Au départ je voulais récupéré le résultat du recordset dans une variable mais meme résultat d'echec :/

Merci d'avance !

16 réponses

blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

et donc, quelle est l'erreur ?

as-tu penser à faire un affichage des deux zones testées pour voir à quoi elles ressemblent ?

Sinon, une solution peut être de passer avec la fonction dlookup, qui permet de récupérer une valeur dans une table avec des contraintes...
0
vto
 
L'erreur est qu'il ne m'affiche rien ! quand je modifie mon code et que j'essaye avec la fonction find/first/Next ...
il ne prend en compte que la 1ere donné de ma table !

Oui j'ai essayé de voir ce qu'elles contenaient et le "RScle.fields ("cl_Libelle") apparemment contient toujours la meme valeur ... tandis que le résultat de la zone de liste est bien pris en compte...

Je ne connait pas cette fonction dlookup mais je vais essayer de voir comment l'utiliser !

sinon si quelqu'un a une idée aussi je suis preneur .

Merci d'avance et merci blux pour ta rapidité a répondre !!!
0
vto
 
Re,

Voila j'ai essayer de mettre ca mais sa ne marche pas pourtant la syntaxe me semble correcte :

Dim intRep As Integer

intRep = Nz(DLookup("[cl_NbExemplaire]", "Clef", "[cl_Libelle]= '" & zlCle.Value & "' "), 0)
MsgBox ("il y a " & intRep & " exemplaires")

il me renvoie tjs 0 et si j'enlève "),0)" il me met qu'il y a aucun enregistrement en cours :/

help plz
0
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
essaye avec un msgbox rscle!cl_Libelle, ça devrait bouger normalement...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vto
 
et j'ai oublier de précisé aussi que cl(NbExemplaire était de type numérique.
0
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
voui, mais ça n'a que peu d'importance pour l'instant (on verra si on peut faire avec dlookup ensuite), je voudrais savoir si c'est le cas aussi pour le test que tu fais :
If RScle.Fields("cl_Libelle").Value = Me.zlCle.Value
--

A+ Blux           
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
vto
 
non tjs rien...
0
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
y'a un truc qui m'échappe, ton champ cl_Libelle est bien rempli, dans la table 'clef' ?
0
vto
 
pour mieux voir la chose .

Ma table:
cl_Numéro cl_Libelle cl_NbExemplaire
31 mairie 5
32 jean vilard 8
33 centre culturel 6
34 a 1
35 b 2
36 c 3

Code:
Do While Not RScle.EOF
If RScle.Fields("cl_Libelle").Value = Me.zlCle.Value Then
MsgBox ("il y a" & RScle![cl_NbExemplaire] & " exemplaires")
Reconnu = True
GoTo Fin
End If
RScle.MoveNext
Loop

Lors du test je met le point d'arret au niveau du loop.
dans ma zone de liste du formulaire je choisit "a" par exemple,
RScle.Fields("cl_Libelle").Value contient "jean vilard"
Me.zlCle.Value contient 35
RScle![cl_NbExemplaire] contient 8

voila toutes les info du test !
0
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
faudrait peut-être penser à tester cl_numero au lieu de cl_libelle si c'est pour le comparer à zlcle.value qui semble contenir un numérique, non ?
0
vto
 
Me.zlCle.Value contient 34 et pas 35
0
vto
 
oui deja fait mais meme quand jessaie cela rien ne se passe lors du click sur le bouton ou cette procédure doit se lancer !
0
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
colle un msgbox "toto" pour voir si on y rentre déjà...
0
vto
 
oui oui sa fonctionne si je met un msgbox avant RScle.EOF l'action se déclenche mais sinon sa ne fonctionne pas rien ne se passe
0
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
t'as regardé mon message 10, pour voir ton test ?
0
vto
 
oui oui j'ai tester aussi mais rien ne se passe lors du click !
0
vto
 
Dans le if j'ai rajouté " Else
MsgBox ("Aucun enregistrement")"
et la l'évenement click se déclenche pourtant il y a belle et bien des valeur dans la table clef mais la comparaison ne se fait pas :/
0
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
la comparaison se fait parce que vas dans le else...

la question est plutôt : pourquoi n'y a t'il jamais égalité. ?
je ne comprends pas pourquoi tu testes cl_libellé avec la zone de saisie, sachant que dans ta table, je verrais plutôt cl_numero à tester avec zlcle...
0
Utilisateur anonyme
 
Salut

est tu sur d'etre vraiment connecté a la base, car ton jeu d'enregistrement, semble ne pas figuré...
0
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Pour moi, le currentdb dans Set RScle = CurrentDb.OpenRecordset(Req) provoquerait une erreur si une base n'était pas disponible...
0
vto
 
C'est bon problème résolu l'erreur venait de ma requète qui alimenter ma zone de liste ! elle selectionner cl_numéro au lieu de cl_libelle :/ erreur bete mais merci quand meme pour ton aide blux car tu était trés rapide a me répondreet je t'en remercie !!!!!!!!!!!
0
blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
c'est ce que j'ai suggéré en 10...
0