RecordCount [Résolu]

cs_toofar 8 Messages postés mercredi 11 juillet 2007Date d'inscription 9 décembre 2011 Dernière intervention - 12 juil. 2007 à 18:23 - Dernière réponse : cs_toofar 8 Messages postés mercredi 11 juillet 2007Date d'inscription 9 décembre 2011 Dernière intervention
- 13 juil. 2007 à 10:36
Bonjour,

J'ai créé un recordset à l'aide d'une requête SQL et je l'ai paramétrée en fonction de plusieurs listes de choix.

Seulement le RecordCount me compte à chaque fois un seul enregistrement alors que celui ci en compte plusieurs... (Pour preuve le résultat est différent quand je l'execute dans SQL)
Cela viendrait il du fait que j'utilise des liste de choix pour conditionner ma requête ??

Voici mon code :

Dim rs As DAO.Recordset
    Set rs = db.OpenRecordset("SELECT AGREMENTS.OBJECTID " & _
                        "FROM Agrements " & _
                        "WHERE (((AGREMENTS.MILLESIME)=" & Me.zl_millesime.Column(0) & ") " & _
                        "AND ((AGREMENTS.DATE)=#" & stock_date & "#) " & _
                        "AND ((AGREMENTS.dossier)=" & Me.zl_dossier.Column(0) & ") " & _
                        "AND ((AGREMENTS.cave)=" & Me.zl_cave.Column(0) & ") " & _
                        "AND ((AGREMENTS.cuve)=""" & Me.zl_cuve.Column(0) & """));")

Voyez vous une quelconque erreur !

Merci
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 12 juil. 2007 à 23:28
3
Merci
Bonsoir (et salut à Jack et à Exploreur),

Voici ce qui me trouble :

"Pour preuve le résultat est différent quand je l'execute dans SQL"

Nuance !
Quand tu lances ta requête directement, ce sont des données, que tu mets dans ta requête, pas des variables...


Il suffit que l'une seule de ces données soit autre (même a un caractère près) que le contenu de la variable correspondante pour que le résultat ne soit pas le même en lançant directement ta requête (avec des valeurs) et en la lançant avec des variables ..

envoie plutot le texte de ta requête dans une textbox, copie-le et lance ensuite cette requête telle quelle directement depuis SQL... tu en auras ainsi le coeur vraiment net..

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de jmfmarques
Meilleure réponse
cs_moustachu 1079 Messages postés jeudi 14 novembre 2002Date d'inscription 1 janvier 2012 Dernière intervention - 13 juil. 2007 à 09:44
3
Merci
Salut,

Et si tu fais un rs.MoveLast avant de faire ton recordcount, ça ne marche pas mieux ? Souvent, il faut s'être positionné sur le dernier enreg pour savoir combien il y en a.



++
 Moustachu

Merci cs_moustachu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_moustachu
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 12 juil. 2007 à 18:47
0
Merci
Salut,

Moi je pense que dans ta requête, il doit te manquer des ' qui doivent entourés tout ce qui "touche" à du carractère(chaine)...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Commenter la réponse de cs_Exploreur
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 12 juil. 2007 à 19:14
0
Merci
Salut
- Puisque ta requète ne s'adresse qu'à une seule table, pas la peine de la préciser avant le nom des champs
- Abondance de parenthèse nuit à la compréhension.
- Comme le dit Exploreur, il doit manquer des ' pour encadrer les chaines.
- SQL accepte l'encadrement de chaine avec " mais aussi '. Ca tombe bien car le mélange SQL et VB deviendrait bien lourd.
- Ton champ DATE est mal choisi car il ressemble à un mot clé des langages. Dans ce cas, encadre-le avec des crochets droits [ et ] afin que le moteur ne se trompe pas.
- Il est important de respecter la casse des noms des champs (DATE est en maj alors que les autres en min : bizarre)

Voilà ce que pourrait donner ta requète en supposant que tous tes champs soient définis comme des chaines (sauf DATE apparemment) :

Set rs = db.OpenRecordset( _
      "SELECT OBJECTID " & _
        "FROM Agrements " & _
       "WHERE MILLESIME = '" & Me.zl_millesime.Column(0) & "' " & _
         "AND [DATE] = #" & stock_date & "# " & _
         "AND dossier = '" & Me.zl_dossier.Column(0) & "' " & _
         "AND cave = '" & Me.zl_cave.Column(0) & "' " & _
         "AND cuve = '" & Me.zl_cuve.Column(0) & "';")

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Commenter la réponse de cs_Jack
cs_toofar 8 Messages postés mercredi 11 juillet 2007Date d'inscription 9 décembre 2011 Dernière intervention - 13 juil. 2007 à 09:41
0
Merci
Merci pour vos réponses !!!
Commenter la réponse de cs_toofar
cs_toofar 8 Messages postés mercredi 11 juillet 2007Date d'inscription 9 décembre 2011 Dernière intervention - 13 juil. 2007 à 09:58
0
Merci
Re.
stock_date est une variable date qui permet de conserver la date d'une liste de choix et qui la transforme à l'aide d'une fonction (jj/mm/aaaa -> mm/jj/aaaa). Car SQL lit les dates à l'anglosaxonne...
Commenter la réponse de cs_toofar
cs_toofar 8 Messages postés mercredi 11 juillet 2007Date d'inscription 9 décembre 2011 Dernière intervention - 13 juil. 2007 à 10:36
0
Merci
Salut jmfmarques, j'ai suivi tes conseils en envoyant le résultat de la requête dans une TextBox puis en recopiant celle-ci dans une SQL, il me trouve le bon nombre d'enregistrements et non pas 1 seul enregistrement quel que soit le nombre exact...

Merci
Commenter la réponse de cs_toofar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.