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

draaxk 3 Messages postés mercredi 26 octobre 2005Date d'inscription 7 novembre 2008 Dernière intervention - 7 nov. 2008 à 19:16 - Dernière réponse : NHenry 14204 Messages postés vendredi 14 mars 2003Date d'inscription 20 juin 2018 Dernière intervention
- 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 !
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
draaxk 3 Messages postés mercredi 26 octobre 2005Date d'inscription 7 novembre 2008 Dernière intervention - 7 nov. 2008 à 21:29
3
Merci
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
   

Merci draaxk 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de draaxk
NHenry 14204 Messages postés vendredi 14 mars 2003Date d'inscription 20 juin 2018 Dernière intervention - 7 nov. 2008 à 21:27
0
Merci
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
Commenter la réponse de NHenry
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 7 nov. 2008 à 21:28
0
Merci
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
Commenter la réponse de cs_casy
draaxk 3 Messages postés mercredi 26 octobre 2005Date d'inscription 7 novembre 2008 Dernière intervention - 7 nov. 2008 à 21:30
0
Merci
Le .movelast n'est pas autorisé avec un curseur forward-only, et je ne suis pas à la fin de mon recordset (eof est faux)
Commenter la réponse de draaxk
NHenry 14204 Messages postés vendredi 14 mars 2003Date d'inscription 20 juin 2018 Dernière intervention - 7 nov. 2008 à 22:19
0
Merci
Bonjour,

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

http://nhen0039.chez-alice.fr/index.php
Commenter la réponse de NHenry

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.