[ VB6 + MySQL ] - Acces a une base MySQL via une appli VB

- Acces a une base MySQL via une appli VB [ VB6 + MySQL ] - VB/VBA/VBS - Programmation

Marsh Posté le 04-06-2002 à 23:27:19    

Salut, tlm
je voudrais savoir comment acceder a partir d'un application VB a une base de donnee Mysql distante: j'ai essayer ce code choppé sur un site apres avoir installé MyOBDC 3.5.1 mais ca va po , y a plein d'erreur dans le script deja dans la declaration des variable , et je ne sais pas quel reference ajouter dans vb ..  
 
Private Sub Form_Load()
    ' Déclaration des objets
Dim wrkJet As Workspace
Dim db As Connection
Dim rs As Recordset
Dim Qd As QueryDef
 
Set wrkJet = CreateWorkspace("", "", "", dbUseODBC)
Set db = wrkJet.OpenConnection("", dbDriverNoPrompt, False, "ODBC;DSN=MonDSN;UID=MonID;
PWD=MonPasse" )
 
' Création d'une requète SQL
' Pour mettre à jour un champs
sqlquery = "UPDATE Matable SET Champs2 = 'toto' WHERE Champs1 = 1;"
 
' Pour créer un nouvel enregistrement
sqlquery = "INSERT INTO Matable (Champs1, Champs2) VALUES (1, 'toto';);"
 
' Pour supprimer un enregistrement
sqlquery = "DELETE FROM Matable WHERE Champs1 = 1;"
 
' Pour selectionner des enregistrements
sqlquery = "SELECT * FROM Matable WHERE Matable.Champs1 = 1 ORDER BY Matable.Champs2"
 
' Pour émettre la requète sauf pour la récupération des résultats sous forme de tableau
Set Qd = db.CreateQueryDef("" )
Qd.SQL = sqlquery
Qd.Execute dbRunAsync
 
' Récupération des résultats sous forme de tableau (requète de selection)
Set rs = db.OpenRecordset(sqlquery)
Do While Not rs.EOF
 
 
Valeur1 = Trim(rs("Champs1" ))
Valeur2 = Trim(rs("Champs2" ))
Me.Print Valeur1 & " " & Valeur2
rs.MoveNext
 
Loop
' fermeture de la base
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
wrkJet.Close
Set wrkJet = Nothing
 
End Sub

 
 
 
qqun a un bon site avec un tutoriel a ce sujet ? Merci
 
SquiD

Reply

Marsh Posté le 04-06-2002 à 23:27:19   

Reply

Marsh Posté le 05-06-2002 à 00:11:44    

up :/
 
pq personne lis mon post?

Reply

Marsh Posté le 05-06-2002 à 00:44:43    

up

Reply

Marsh Posté le 05-06-2002 à 09:34:34    

Tu as déclarer le driver ODBC dans le panneau de configuration de windows ?
 
 
 
J.  :p

Reply

Marsh Posté le 05-06-2002 à 10:22:00    

salut cmoijim, bah non je me suis contenté d'installé OBDC 3.5.1 la, comment dois je faire pour declarer ca?
 
merci

Reply

Marsh Posté le 05-06-2002 à 10:22:50    

P.S. chui sous xp pro

Reply

Marsh Posté le 05-06-2002 à 11:38:40    

eh oui ! il te faut créer un DSN utilisateur
 
dans le panneau de config doit y avoir un truc "ODBC 32" ou "Data source" ou quelque chose comme ça..
tu cliques dessus, tu ajoutes un nouveau DSN utilisateur, et là tu sélectionnes le driver que tu as installé.
 
dans le code, il faudra remplacer "MonDSN" par celui que tu as créé :D

Reply

Marsh Posté le 05-06-2002 à 11:46:05    

Okkkk on va essayer ca
merci !

Reply

Marsh Posté le 05-06-2002 à 14:38:30    

ben y a po ca :'(

Reply

Marsh Posté le 05-06-2002 à 16:22:27    

SquiiiD a écrit a écrit :

ben y a po ca :'(  




 
sous xp pro, tu vas dans le panneau de config/outils d'administration/source de données odbc. tu fais "ajouter" et tu sélectionne le pilote ODBC de mysql. Dans sa config, donne lui le nom "MonDSN", et sélectionne la bonne base de données. Si elle est distante et que t'y connais rien en ODBC, ça va être un peu dur. Essaie de trouver une doc sur le drivers odbc de mysql si tu t'en sors pas. Pour sql server, quand c'est distant, on peut mettre l'adresse ip de la machine distante... peut etre est ce pareil dans mysql
 
Attention, il faut que tu utilises un utilisateur existant dans mysql à la place de MonID et MonPasse.

Reply

Marsh Posté le 05-06-2002 à 16:22:27   

Reply

Marsh Posté le 06-06-2002 à 08:11:02    

Salut matz,  
 
voila j'ai fais ce que tu as dis, mais dans VB cette ligne reste toutjours en rouge, est-ce normal???  
 
Set db = wrkJet.OpenConnection("", dbDriverNoPrompt, False, "ODBC;DSN=MonDSN;UID=MonID;
PWD=MonPasse" )
 
le code ke jai copié collé je l'ai trouvé ici :  
http://www.devparadise.com/technoweb/code/vb/A99.asp
 
qu'est ce qui va pas? merci d'avance a+
 

matz a écrit a écrit :

 
 
sous xp pro, tu vas dans le panneau de config/outils d'administration/source de données odbc. tu fais "ajouter" et tu sélectionne le pilote ODBC de mysql. Dans sa config, donne lui le nom "MonDSN", et sélectionne la bonne base de données. Si elle est distante et que t'y connais rien en ODBC, ça va être un peu dur. Essaie de trouver une doc sur le drivers odbc de mysql si tu t'en sors pas. Pour sql server, quand c'est distant, on peut mettre l'adresse ip de la machine distante... peut etre est ce pareil dans mysql
 
Attention, il faut que tu utilises un utilisateur existant dans mysql à la place de MonID et MonPasse.  



Reply

Marsh Posté le 06-06-2002 à 08:39:27    

Il faut aussi que tu rajoutes dans les references la dll utiliser pour te connecter a MySQL...

Reply

Marsh Posté le 06-06-2002 à 08:42:35    

k1200 a écrit a écrit :

Il faut aussi que tu rajoutes dans les references la dll utiliser pour te connecter a MySQL...  




 
Vi c'est ce que j'ai regardé mais y a des centaine de truc dedans, je ne sais pas le quel mettre, et y a rien qui fait reference a MySQL la dedans :/
donc si tu sais quoi mettre .. merci
 
a+

Reply

Marsh Posté le 06-06-2002 à 10:07:13    

Essaye avec "Microsoft ActiveX Data Object x.x Library" (ADO)...

Reply

Marsh Posté le 06-06-2002 à 11:43:55    

j'en ai plein mais dans aucun y a ADO !
voila une capture ptete ke ca vous aidera a m'aider :  
jai essayer tout les activex data object, ca change rien :/
 
http://scyberchat.free.fr/capture.jpg
 
merci

Reply

Marsh Posté le 06-06-2002 à 13:27:46    

Bon tu prend la derniere version (2.7 dans ton cas...)
 
Et pour ta ligne en rouge mais ton "PWD=MonPasse" )" a la fin de la ligne du dessus...
 
Sur VB tu dois mettre une instruction par ligne... C'est pas du C ou tu peux avoir plusieurs instruction par ligne et qu'une instruction soit sur plusieurs ligne vu qu'il y a des ; a la fin de chaque instruction...

Reply

Marsh Posté le 06-06-2002 à 13:42:48    

En VB6 on peut coder sur plusieurs lignes en ajoutant <espace>_ à chaque fin de ligne qui a une suite
 
exemple:
Dim a As String, b As String, _
    c As Long, d As Long
 
C'était juste pour info...
 
a+

Reply

Marsh Posté le 06-06-2002 à 14:05:22    

C'est aussi une solution... mais ne pas oublier l'espace entre le code et le "_" autrement VB rale...

Reply

Marsh Posté le 06-06-2002 à 14:32:13    

SquiiiD a écrit a écrit :

Salut matz,  
 
voila j'ai fais ce que tu as dis, mais dans VB cette ligne reste toutjours en rouge, est-ce normal???  
 
Set db = wrkJet.OpenConnection("", dbDriverNoPrompt, False, "ODBC;DSN=MonDSN;UID=MonID;
PWD=MonPasse" )
 
le code ke jai copié collé je l'ai trouvé ici :  
http://www.devparadise.com/technoweb/code/vb/A99.asp
 
qu'est ce qui va pas? merci d'avance a+
 
 




 
Va sur la ligne en rouge, ajoute un caractère à la fin, enleve le, et fais "enter". C'est juste pour le forcer à revérifier la ligne. Quel est le message d'erreur qu'il te donne ? Donne le nous précisemment

Reply

Marsh Posté le 06-06-2002 à 17:17:43    

Merci bcp !  
Voila j'ai fait ce que vous m'avez dit, et en effet pour la ligne en rouge il fallait que ca soit sur la meme ligne, mais maitnenant j'ai ce message d'erreur qui apparait :  
 
http://scyberchat.free.fr/capture2.jpg
 
 
merci d'avance !

Reply

Marsh Posté le 06-06-2002 à 17:25:57    

Ca donne quoi quand tu cliques sur débogage ?

Reply

Marsh Posté le 06-06-2002 à 17:28:34    

bah il me met la ligne que j'ai selectionnee plus haut en jaune.  
:/

Reply

Marsh Posté le 06-06-2002 à 18:10:07    

SquiiiD a écrit a écrit :

bah il me met la ligne que j'ai selectionnee plus haut en jaune.  
:/  




 
C'est parceque tu dois cocher, dans les references du projet, "Microsft Activex Data Objects 2.7 Library". Si ça marche toujours pas, décoche le et coche "Microsft Activex Data Objects Recordset 2.7 Library". Si ça marche pas, coche les deux.

Reply

Marsh Posté le 06-06-2002 à 18:17:57    

microsoft activex data objects 2.7 library est coché, mais ca va pas, et ta deuxieme solution ben n'apparait meme pas dans la liste :/
 
pourtant jai bien installé le driver OBDC .  
 
comprends po :/
 
a+ merci

Reply

Marsh Posté le 06-06-2002 à 18:28:57    

SquiiiD a écrit a écrit :

microsoft activex data objects 2.7 library est coché, mais ca va pas, et ta deuxieme solution ben n'apparait meme pas dans la liste :/
 
pourtant jai bien installé le driver OBDC .  
 
comprends po :/
 
a+ merci  




 
Ca n'a rien à voir avec ton driver ODBC. Là, tu as un problème VB, pas d'odbc
 
Ton problème de code (on n'est en pas encore a l'acces a la base distante) vient d'un problème de librairie non referencée.. donc tu dois cocher la bonne dans "reference". essaie avec tout ce qui ressemble à "ADO", "Active Data Objects", "ActiveX Data Objects", "ADODB". Coche tout ce qui ressemble à ça, et reessaie.

Reply

Marsh Posté le 06-06-2002 à 21:11:34    

Ok on va essayer ca.
 
C'est toujours aussi compliquer de faire un truc avec microsoft???

Reply

Marsh Posté le 06-06-2002 à 21:49:45    

SquiiiD a écrit a écrit :

Ok on va essayer ca.
 
C'est toujours aussi compliquer de faire un truc avec microsoft???  




 
c'est pas microsoft, le problème, c'est l'accès aux données, la prgorammation, la cohabitation de systèmes différents etc.
 
dans ton site d'exmple, ils disent pas quelle references ils ont utilisé pour cet example?

Reply

Marsh Posté le 06-06-2002 à 22:25:52    

non je pense pas :/

Reply

Marsh Posté le 07-06-2002 à 09:08:09    

C'est bon j'ai trouver... c'est pas du ADO mais du DAO...
 
Tu dois cocher "Microsoft DAO x.x Object Library"
 
Et la j'ai tester et ca fonctionne...

Reply

Marsh Posté le 10-06-2002 à 17:51:28    

Private Sub Form_Load()
    Dim myConn As New ADODB.Connection
    Dim VarThemeNom As String
    Dim i As Integer
    Dim NombreEnregistrements
     
    myConn.Open "MonDSN"
    Dim MyRecordSet As New ADODB.Recordset
     
    Set MyRecordSet.ActiveConnection = myConn
    MyRecordSet.Source = "SELECT * FROM PhotosThemes"
    MyRecordSet.CursorType = adOpenDynamic
    MyRecordSet.Open
     
     
     
    For i = 1 To 10
         
        VarThemeNom = MyRecordSet!ThemeNom
        txtThemeNom.Text = txtThemeNom.Text + " - " + VarThemeNom
        MyRecordSet.MoveNext
    Next i
     
End Sub


 
 
et ca marche !!! Merci a tous

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed