Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1503 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  demande de précisions VB & Mysql Via ODBC

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

demande de précisions VB & Mysql Via ODBC

n°727152
IcemaN_BX
Posté le 16-05-2004 à 00:27:16  profilanswer
 

bonjour,
 
J'ai fait un petit projet vb 6.0 entreprise qui doit fonctionner avec mysql mais mon probléme est le suivant:
 
j'arrive a créer ou retirer des bases/tables/enregistrements sans probléme mais je ne c pas comment recupérer avec VB la réponse aux questions que je pe poser a la base de données (je c lui demander mais je ne c pas comment recuperer la reponse a la requete...
 
J'utilise le code source propose par Drasche que je profite pour remercier sincerement !) sur ce forum:
http://forum.hardware.fr/hardwaref [...] 3534-1.htm
 
J'ai cru comprendre que le code de reception des données etait:
    Do While Not oRst.EOF
        ' Output dans l'immediate window
        Debug.Print oRst!ITLCATELLIB
        oRst.MoveNext
    Loop  
mais dans mon cas les reponses ne doivent pas s'afficher ds l'imediatewindow mais se stocker ds un tableau !!
 
A ce propos j'aimerais aussi savoir comment retourner le nombre de reponses a une requete afin de dimenssionner mon tableau correctement
 
Merci d'avance pour vos reponses !

mood
Publicité
Posté le 16-05-2004 à 00:27:16  profilanswer
 

n°727239
Kanell
Posté le 16-05-2004 à 09:16:09  profilanswer
 

bonjour,
 
essaies-çà :
 
    Do While Not oRst.EOF  
        nb = nb + 1
        ReDim Preserve tonTab(nb)  
        tonTab(nb-1) = oRst!ITLCATELLIB  
        oRst.MoveNext  
    Loop
 
Ca peut peut-être fonctionner dans ton cas...
 
Salut
 
 

n°727289
drasche
Posté le 16-05-2004 à 11:45:09  profilanswer
 

attention, le Redim donne au tableau l'indice du dernier élément et non le nombre d'éléments, sur une base de 0 à n-1. Tu auras donc un nb = 0 en début de code, et:
 

Code :
  1. tonTab(nb) = oRst!ITLCATELLIB

n°727302
Kanell
Posté le 16-05-2004 à 12:06:16  profilanswer
 

Bien sûr!
Faut pas oublier de déclarer les variables et les initialiser :
 
    Dim tonTab() as string ' ou autre type
    nb as long
 
    nb = 0
    oRst.MoveFirst
    tonTab(nb) = oRst!ITLCATELLIB
    oRst.MoveNext
 
et seulement après :
 
    Do While Not oRst.EOF  
        nb = nb + 1  
        ReDim Preserve tonTab(nb)
        tonTab(nb) = oRst!ITLCATELLIB  
        oRst.MoveNext  
    Loop
 
 
Je crois que c'est çà mais bon çà fait un moment que je n'ai pas manipulé les recordsets !!
 
 

n°727307
drasche
Posté le 16-05-2004 à 12:10:11  profilanswer
 

l'incrémentation du nb à la fin de la boucle et c'est bon pour moi.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°727308
Kanell
Posté le 16-05-2004 à 12:13:50  profilanswer
 

Pas dans ce cas puisqu'il doit être incrémenté avant le redim et avant l'affectation

n°727317
IcemaN_BX
Posté le 16-05-2004 à 12:25:45  profilanswer
 

Trés bien j'ai bien noté la marche à suivre mais mainetant il y a un autre probléme...
 
lors de l'execution je reçoit une fentre de debug avec le message suivant:  
 
    cette opération n'est pas autorisée si l'objet est fermé
 
en cliquant sur debug la ligne surlignée en jaune est  
 
Do While Not oRst.EOF
 
voivi le contexte dans lequel ce code est inséré:
 
' Initialisation de la connection
    Set oCon = New connection
    Call oCon.Open(strConnect)
 
    ' Initialisation d'une requête
    strSql = request
    Set oRst = New Recordset
    ' adOpenForwardOnly -> meilleur choix pour un parcours du recordset du début à la fin
    ' adCmdText -> on précise qu'il s'agit d'une requête
 
    Call oRst.Open(strSql, oCon, adOpenForwardOnly, adLockReadOnly, adCmdText)
  '------------------------AFFICHAGE DES RESULTATS----------------------
  Dim avancement As Integer
   ' Bouclage sur le recordset
     :hello:  Do While Not oRst.EOF
    avancement = avancement + 1
        ' Output dans l'immediate window
        mysqlansers(avancement) = oRst!ITLCATELLIB
        oRst.MoveNext
    Loop
    ' Fermeture propre des connexions et destruction des objets
    oRst.Close
    Set oRst = Nothing
    oCon.Close
    Set oCon = Nothing
End Sub
 

n°727319
Kanell
Posté le 16-05-2004 à 12:29:34  profilanswer
 

Pour çà, j'aurai fait un truc du genre :
 
While oRst.EOF = false
    ...
Wend
 
J'aime pas trop les Loop !!

n°727320
drasche
Posté le 16-05-2004 à 12:30:39  profilanswer
 

à moins qu'il y ait eu plantage sur l'ouverture du recordset (méthode Open), je ne vois pas comment...


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°727322
drasche
Posté le 16-05-2004 à 12:31:07  profilanswer
 

les tests booleens avec des comparaisons, c'est mal :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
mood
Publicité
Posté le 16-05-2004 à 12:31:07  profilanswer
 

n°727327
Kanell
Posté le 16-05-2004 à 12:36:08  profilanswer
 

drasche a écrit :

les tests booleens avec des comparaisons, c'est mal :o


 
??

n°727334
drasche
Posté le 16-05-2004 à 12:43:58  profilanswer
 

While oRst.EOF = false  
 
-> While Not oRst.EOF


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°727341
Kanell
Posté le 16-05-2004 à 12:53:43  profilanswer
 

oRst.EOF est par définition un booléen dont la valeur par défaut est true
 
écrire                   While Not oRst.EOF
c'est l'équivalent de    While Not oRst.EOF = true
et donc de               While oRst.EOF = false  
 
Où est le mal ?
 
 

n°727347
drasche
Posté le 16-05-2004 à 12:56:43  profilanswer
 

le Not est fait pour ça justement. J'ai de plus remarqué chez la majorité des développeurs un certain dégoût vis-à-vis des comparaisons de booléens, et avec raison: c'est la manière naturelle de faire. Les True/False ne doivent servir qu'aux affectations.
 
Enfin, la valeur d'un booléen est False par défaut (d'autant plus si le recordset retourné est vide).


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°727350
Kanell
Posté le 16-05-2004 à 13:02:32  profilanswer
 

A toi de voir IcemaN_BX...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  demande de précisions VB & Mysql Via ODBC

 

Sujets relatifs
[XML / C++] Création via ActiveX : Exemple ?Afficher les 10 derniers enregistrements d'une table MySQL
message erreur MySQLEquivalence fonctions MySQL-Oracle
php/Mysql $_session[MYSQL] Backup bdd, différence entre Insertions complètes et étendues
Nombre de ligne d'une requète Select en ODBCutiliser le sso avec mysql
[php/MySQL]Timestamps et dates tronquées[MySQL] Problème sur reqête ensembliste - EXCEPT
Plus de sujets relatifs à : demande de précisions VB & Mysql Via ODBC


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR