[VB6 + Access] Problème avec une requête et la fonction .Recordcount [Résolu]

NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 30 juin 2005 à 10:36 - Dernière réponse : NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention
- 6 juil. 2006 à 22:32
Bonjour,



Je vous écris car dans mon programme je fais une requête dans une base
Access afin de compter le nombre de résultat que génère la requête et
ainsi mettre cette valeur Integer dans une variable temp. Pour celà
j'utilise la fonction .RecordCount mais
ça ne fonctionne pas comme il faut chez moi. Je n'ai pas de messages
d'erreur mais j'obtiens "-1" dans ma variable alors que je devrais
obtenir 90 !



Voilà mon code:



Dim cnx As New ADODB.Connection

Dim req_ent As New ADODB.Recordset

Dim temp As Integer



Call Connexion(cnx) 'Connexion à la base



Set req_ent = New Recordset

req_ent.Open "select CodePoste from Poste", cnx, adOpenDynamic, adLockOptimistic

temp = req_ent.RecordCount



J'ai aussi essayé ça comme requête mais ça ne change rien, ça me donne toujours "-1":



req_ent.Open "select count(CodePoste) from Poste", cnx, adOpenDynamic, adLockOptimistic



Quelqu'un peut-il m'aider SVP? Merci d'avance...
Afficher la suite 

14 réponses

Meilleure réponse
omsylv 69 Messages postés lundi 3 janvier 2005Date d'inscription 15 septembre 2005 Dernière intervention - 30 juin 2005 à 10:56
3
Merci
Bonjour,



Essaye de mettre un ; à la fin de ta requête. Concernant la deuxième
requête je pense que pour récupérer la valeur il faut faire :



temp = req_ent(0) 'récupère le premier résultat qui contient donc ton count

Merci omsylv 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Meilleure réponse
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 30 juin 2005 à 11:10
3
Merci
Essaie peut etre comme ca....

req_ent.Open "select count(CodePoste) as r from Poste", cnx, adOpenDynamic, adLockOptimistic
tot = req_ent!r

Voila qui devrait te compter tout ca...

(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire

Merci tof008 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Meilleure réponse
cs_dan80 101 Messages postés mardi 3 mai 2005Date d'inscription 19 avril 2006 Dernière intervention - 30 juin 2005 à 11:27
3
Merci
essaye ca:

Set req_ent = New ADODB.Recordset
req_ent.CursorLocation = adUseClient
req_ent.Open "select distinct count(CodePoste) from Poste", cnx, adOpenDynamic, adLockOptimistic

et la ton recordcount va fonctionné!

dis moi si ca marche

Merci cs_dan80 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 30 juin 2005 à 11:12
0
Merci
Merci omsylv, tu as répondu à ma question avec ta 2e suggestion. Quand
j'utilise Count dans la requête puis req_ent(0) ça fonctionne. Voici
mon code:



Set req_ent = New Recordset

req_ent.Open "select distinct count(CodePoste) from Poste", cnx, adOpenDynamic, adLockOptimistic

temp = req_ent(0)



J'obtiens bien la bonne valeur pour temp.



Par contre pour la fonction .RecordCount je vois toujours pas l'a faire
fonctionner. Je ne peux pas mettre de ";" dans ma ligne car j'ai un
message d'erreur VB sinon et si je mets le ";" à la fin de ma requête,
c'est-à-dire juste avant le guillemet de fin de requête, ça ne change
rien, j'obtiens toujours -1.



Donc merci omsylv pour ton aide même si je ne sais toujours pas comment
utiliser la fonction .Recordcount, tu m'as donné une autre solution.



++
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 30 juin 2005 à 11:16
0
Merci
Ta solution fonctionne aussi Tof008!! Merci mec. Je pense pas qu'il y en ai une meilleure qu'une autre. Au choix donc.



Sinon tu sais toi comment utiliser la fonction .Recordcount?



++
omsylv 69 Messages postés lundi 3 janvier 2005Date d'inscription 15 septembre 2005 Dernière intervention - 30 juin 2005 à 11:19
0
Merci
De rien. Mais c'est bizarre pour le RecordCount. -1 signifie qu'il
n'arrive pas à compter le nombre d'enregistrement. Ceci dit normalement
RecordCount renvoie un long et pas un int. Essaye de déclarer temp as
long. Si ça ne fonctionne pas c'est que ça vient de la requête
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 30 juin 2005 à 11:32
0
Merci
De rien net_slipknot! On se doit bien ca!!!
Une petite question à dan80 : tu peux m'expliquer à quoi sert cette cette ligne? req_ent.CursorLocation = adUseClient
Parce que je n'avais jamais vu ca auparavant et je suis un peu curieux...



(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 30 juin 2005 à 11:35
0
Merci
Et pour le recordcount, je pense que si tu fais tout simplement
req_ent.movefirst
tot = req_ent.Recordcount
ca devrait marcher aussi...
Mais en fait c'est un peu la même réponse que omsylv...En fait tu te place sur le premier enregistrement...


(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 30 juin 2005 à 11:55
0
Merci
dan80:



J'ai essayé ta solution avec la ligne que tu m'as dis de rajouter puis
le code avec la fonction .Recordcount et effectivement ça fonctionne!

Mais comme tof008, j'aimerais bien savoir à quoi sert la ligne req_ent.CursorLocation = adUseClient afin de comprendre pourquoi elle est nécessaire pour faire fonctionner le .Recordcount ...



Merci.
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 30 juin 2005 à 12:00
0
Merci
t'as essayé avec le movefirst? parce que j'ai tenté chez moi et ca a l'air de marcher....
(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
cs_dan80 101 Messages postés mardi 3 mai 2005Date d'inscription 19 avril 2006 Dernière intervention - 30 juin 2005 à 12:23
0
Merci
c pour positionné le cursuer sur le recordset
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 30 juin 2005 à 14:39
0
Merci
Nan tof008 j'ai pas essayé avec le movefirst mais ça revient au même
que ce que propose dan80, le principe étant de se mettre sur le 1er
enregistrement du recordset et seulement après il peut commencer à
compter.



Merci à tous!
tof008 707 Messages postés jeudi 5 mai 2005Date d'inscription 5 janvier 2010 Dernière intervention - 6 juil. 2006 à 15:45
0
Merci
alors net_slipknot! tu traine plus sur VBFrance maintenant que t en reseau!!!!

(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire< body>
NeT_SlipKnoT 65 Messages postés samedi 18 novembre 2000Date d'inscription 10 décembre 2005 Dernière intervention - 6 juil. 2006 à 22:32
0
Merci
Mais LoL!!! Un de ces gars! Il poste ici! Beh depuis que je suis en réseau je ne fais plus de VB... Mais va falloir que je me remette très sérieusement à la prog parce que je vais en manger à la rentrée...

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.