VB6 - Recordcount à -1 alors qu'il y a 83 lignes. [Résolu]

Signaler
Messages postés
3
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
7 novembre 2008
-
Messages postés
14761
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
21 janvier 2021
-
Bonjour à tous,

Lorsque je réalise un "show tables" (ou un "show tables from nomtable") via le drivers ODBC de MySQL (ADODB), j'obtiens bien un recordset avec une colonne et 83 lignes qui contiennent les noms de mes tables.
Mon problème est que le recordcount de ce recordset est à -1. Je ne comprends pas pourquoi.
Est-ce un problème connu, une erreur de ma part ?

J'utilise VB6 sous un Vista x64 Ultimate.
J'ai déjà eu des problèmes avec la requete "describe" qui sous Vista ne me rendait pas la même structure de recordset que le même programme sous XP.

D'avance merci !

5 réponses

Messages postés
3
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
7 novembre 2008

Au final, j'ai trouvé le problème.
Le recorset avait un curseur en foward only, ce qui n'autorise pas le recordcount. Malgré l'initiatlisation du curseur correctement, l'execution de ma requete remettait toujours un curseur foward only.
Du coup j'ai changé ma méthode d'execution pour être sûr qu'aucun paramétrage parasite ne modifie mon curseur (les connexions aux bases sont dans des bibliothèques utilisées par tous les développeurs de ma boîte).

Au final, je n'ai changé que deux lignes et ajouté une seule:
Dim dyn As ADODB.Recordset   est devenu   Dim dyn As New ADODB.Recordset
Set dyn = bdE.Execute(sql)          est devenu    dyn.Open sql, bdE, adOpenDynamic, adLockOptimistic
  et j'ai ajouté juste avant l'execution 
  dyn.CursorLocation = adUseClient
   
Messages postés
14761
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
21 janvier 2021
151
Bonjour,

J'ai eu ce problème avec SQL Server 2000, il faut que tu utilises EOF pour savoir si c'est la fin du RecordSet.

http://nhen0039.chez-alice.fr/index.php
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Il faut parfois faire un .MoveLast suivi d'un .MoveFirst pour que le recordcount soit correctement mis à jour

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
3
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
7 novembre 2008

Le .movelast n'est pas autorisé avec un curseur forward-only, et je ne suis pas à la fin de mon recordset (eof est faux)
Messages postés
14761
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
21 janvier 2021
151
Bonjour,

Tant que EOF est faux, ça veut dire que tu as des données à lire.

http://nhen0039.chez-alice.fr/index.php