VB6 - Recordcount à -1 alors qu'il y a 83 lignes.

Résolu
draaxk Messages postés 3 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 7 novembre 2008 - 7 nov. 2008 à 19:16
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 7 nov. 2008 à 22:19
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

draaxk Messages postés 3 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 7 novembre 2008
7 nov. 2008 à 21:29
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
   
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 nov. 2008 à 21:27
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
7 nov. 2008 à 21:28
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
0
draaxk Messages postés 3 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 7 novembre 2008
7 nov. 2008 à 21:30
Le .movelast n'est pas autorisé avec un curseur forward-only, et je ne suis pas à la fin de mon recordset (eof est faux)
0

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

Posez votre question
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 nov. 2008 à 22:19
Bonjour,

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

http://nhen0039.chez-alice.fr/index.php
0
Rejoignez-nous