VBA/Access Recuperer valeur requête sur liste

Résolu/Fermé
Pyrow - 18 mai 2009 à 09:37
 Pyrow - 18 mai 2009 à 11:08
Bonjour,
J'ai un soucis qui me handicape depuis quelques temps :
Je veux récuperer la valeur d'un "Select Count ...." qui , s'il est égal à 0, alors un message s'affiche.
Le résultat de ce Count s'affiche dans une zone de liste pour afficher comme une sorte de compteur.
(Ne vous demandez pas pourquoi une liste , c'est la seule chose avec laquelle j'ai réussi !)

Je vous mets ici le code qui m'est venu à l'esprit et que je pensais pouvoir faire fonctionner.

//

Private Sub Commande5_Click()
If Me.Liste71.Value = 0 And Me.Liste83.Value = 0 Then
MsgBox "Pas de nouvelles données, faites Rafraîchir si vous désirez voir les dernières demandes créées."
Else
DoCmd.OpenForm "f_C_sauvegarde"
End If
End Sub

//

Mais j'ai l'impression qu'on ne pourra pas y accéder de cette manière car "Me.Liste.Value" me renvoie Null sous le débuggeur.

Merci d'avance. =)

5 réponses

blux Messages postés 25968 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 avril 2024 3 284
18 mai 2009 à 10:52
C'est bien compliqué tout ça ;-)

Je te propose :
MsgBox DCount("Etat_demande","Création", "etat_demande=2 and urgence=false")
Ca devrait simplifier singulièrement le code...
2
blux Messages postés 25968 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 avril 2024 3 284
18 mai 2009 à 10:00
Salut,

le nombre de lignes d'une liste déroulante est dans la propriété listcount.

If me.liste71.listcount = 0...

Mais on peut savoir aussi combien de lignes sont renvoyées par une requête simple avec la fonction dcount(...) ou une requête plus complexe avec la création d'un recordset.

Pour dcount, on imagine la requête suivante :

select champ1 from table1 where champ2 = "toto" dont on pourra connaitre le nombre de lignes renvoyées avec msgbox dcount("champ1","table1","champ2='toto'")

Pour le recordset, c'est plus complexe, on verra si tu en as besoin.
1
Merci pour cette réponse rapide blux,
Soit je me suis mal exprimé , soit je n'ai pas compris ta réponse.
Mon "Count" n'est pas la pour compter les lignes de ma zone de liste, il compte en fait le nombre de Créations faites dans ma base de données.
Cette zone de liste fait apparaitre le nombre de Créations en cour.
Je sais que la zone de liste n'est pas du tout adapté à la situation mais c'est la seule qui m'affiche le resultat de la requete sans poser de soucis.
J'ai besoin de tester si le nombre qui s'affiche dans la zone de liste est égal à 0 ou pas. (donc que le nombre de création est nul)
J'ai déja utilisé quelques RecordSet mais sur ce coup la j'avoue que je coince.

Me suis-je mieux exprimé?
1
blux Messages postés 25968 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 avril 2024 3 284
18 mai 2009 à 10:29
If me.liste71.value = 0...

Maintenant, s'il te dit que la valeur est 'null', c'est que le remplissage de cette zone n'a pas été fait correctement.
Comment est-ce que tu l'effectues ?

Parce que dcount peut être une solution plus facile à gérer...
0
En effet si dcount fonctionne pour ce genre de choses j'aimerais bien que tu m'expliques ...

Sinon pour la façon de procéder...
J'ai créé une requête :

SELECT Count(Etat_demande) AS Expr1
FROM Création
WHERE (((Création.Etat_demande)=2) AND ((Création.Urgence)=False));

et j'ai rajouté dans "Contenu" dans la partie "Données" de la zone de liste :

SELECT r_C_etat_2.Expr1 FROM r_C_etat_2;

Ce qui m'affiche le résultat de la requête dans la zone de liste.

J'ai essayé beaucoup de choses et à chaque fois j'en reviens à "Null" ...

J'avoue ne pas comprendre d'où provient le Null mais bon :/

Merci :)
1

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

Posez votre question
C'est compliqué car j'ai "appris sur le tas" en lisant tes réponses sur beaucoup de post ^^
Je suis en stage et je n'avais jamais utilisé access et le vba donc j'essaie des choses :D

Et bien écoute ... je suis bluffé !
C'est exactement ce qu'il fallait !
Si certains ont le même soucis (même si j'en doute fort!) je vais poster ici ce que j'ai modifié.

Private Sub Commande5_Click()
If DCount("Etat_demande", "Création", "etat_demande=2 and urgence=false") = 0 Then
MsgBox "Pas de nouvelles données, faites Rafraîchir si vous désirez voir les dernières demandes créées."
Else
DoCmd.OpenForm "f_C_sauvegarde"
End If
End Sub


Merci beaucoup blux, si j'ai un soucis je sais maintenant qu'un expert à l'écoute des autres est ici ! ~~
1