- Acces a une base MySQL via une appli VB [ VB6 + MySQL ] - VB/VBA/VBS - Programmation
Marsh Posté le 05-06-2002 à 09:34:34
Tu as déclarer le driver ODBC dans le panneau de configuration de windows ?
J.
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
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éé
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.
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. |
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...
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+
Marsh Posté le 06-06-2002 à 10:07:13
Essaye avec "Microsoft ActiveX Data Object x.x Library" (ADO)...
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
merci
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...
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+
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...
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
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 :
merci d'avance !
Marsh Posté le 06-06-2002 à 17:28:34
bah il me met la ligne que j'ai selectionnee plus haut en jaune.
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.
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
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.
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???
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?
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...
Marsh Posté le 10-06-2002 à 17:51:28
Private Sub Form_Load() |
et ca marche !!! Merci a tous
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