VBA/Access valeur d'une recordset

Fermé
vto - 26 mai 2009 à 11:07
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 - 28 mai 2009 à 08:51
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 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
26 mai 2009 à 11:21
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
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
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 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
26 mai 2009 à 14:15
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
et j'ai oublier de précisé aussi que cl(NbExemplaire était de type numérique.
0
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
26 mai 2009 à 14:26
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
non tjs rien...
0
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
26 mai 2009 à 14:46
y'a un truc qui m'échappe, ton champ cl_Libelle est bien rempli, dans la table 'clef' ?
0
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 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
26 mai 2009 à 15:06
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
Me.zlCle.Value contient 34 et pas 35
0
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 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
26 mai 2009 à 15:34
colle un msgbox "toto" pour voir si on y rentre déjà...
0
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 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
26 mai 2009 à 16:41
t'as regardé mon message 10, pour voir ton test ?
0
oui oui j'ai tester aussi mais rien ne se passe lors du click !
0
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 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
26 mai 2009 à 19:31
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
27 mai 2009 à 20:31
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 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
27 mai 2009 à 21:54
Pour moi, le currentdb dans Set RScle = CurrentDb.OpenRecordset(Req) provoquerait une erreur si une base n'était pas disponible...
0
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 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
28 mai 2009 à 08:51
c'est ce que j'ai suggéré en 10...
0