Intéraction avec BDD MySQL
Bonjour,
Voilà trois jours que je cherche à faire communiquer mon fichier excel avec ma BDD MySQL.
Après avoir corrigé plusieurs problèmes je me retrouve une nouvelle fois face à moi-même, sauf que ce coup-ci je sèche totalement..
Mon problème est que je n'arrive pas à procéder à l'envoie de ma requête vers la BDD.
Voici mon code :
''''''''''''''''''''''''''''Enregistrement BDD''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'1) Connexion BDD
Private Sub ConnectionDB()
Dim S As String
Set oConnect = New ADODB.Connection
S = "DRIVER={MySQL ODBC 5.3 ANSI Driver};" & _
"SERVER=" & Sheets("BasedeDonnees").Range("B30").Text & ";" & _
"DATABASE=" & Sheets("BasedeDonnees").Range("B31").Text & ";" & _
"USER=" & Sheets("BasedeDonnees").Range("B32").Text & ";" & _
"PASSWORD=" & Sheets("BasedeDonnees").Range("B33").Text & ";" & _
"Option=3"
oConnect.Open S
MsgBox ("La BDD est ouverte")
End Sub
'2) Ajout à la BDD
Sub InsertData()
Dim Rs As ADODB.Recordset
Dim Requete As String
Set Rs = New ADODB.Recordset
Call ConnectionDB
With Sheets(1)
Requete = "INSERT INTO client(idClient, nomClient, adresseClient, villeClient, telContact, mailContact, siret) VALUES(" & _
.Cells(2, 1) & ", '" & _
.Cells(2, 2) & "', '" & _
.Cells(2, 3) & "', '" & _
.Cells(2, 4) & "', '" & _
.Cells(2, 5) & "', '" & _
.Cells(2, 6) & "', '" & _
.Cells(2, 7) & "')"
MsgBox (4)
Rs.Open Requete, oConnect, adOpenDynamic, adLockOptimistic
End With
oConnect.Close
Set Rs = Nothing
End SubMa fonction "connectionDB" fonctionne bien, mais lorsque j'arrive à la ligne "RS.Open Requete, oConnect, adOpenDynamic, adLockOptimistic" c'est là que ca foire, et plus particulierement sur "RS.Open Requete".
J'avais comme retourn jusqu'à maintenant "erreur 3709". Après avoir fait plusieurs tests pour tenter de corriger mon problème j'ai maintenant une nouvelle erreur.
Si quelqu'un serai capable de m'aider ce serai vraiment bien, parce que je commence à être cruellement à court d'idées pour résoudre ce problème.
Petite précision : pour mon code je me suis inspiré de celui que vous trouverai en pièce jointe, que j'ai testé et qui marche parfaitement.
Bonjour Auzingueur le forum
bah oui l'autre elle marche, car l'autre elle est bien écrite, elle n'a pas été modifiée par Auzingueur !!!!
à ton avis pourquoi il y a au dessus de tes macros qui marchent
Public oConnect As ADODB.Connectionune variable public mais pourquoi donc ???
allez je te laisse chercher 5 minutes et je reviens
a+
Papou
Ma faute, je n'ai pas mis la totalité de mon code (parce que les 2 premières fonctions ne sont pas interessantes pour ma question, voici mon code dans son intégralité :
Option Explicit
Public oConnect As ADODB.Connection
Sub test()
'''''''''''''''''''''''''''''''Creation Dossier'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim dossierEnregistrement As String
dossierEnregistrement = "" & Feuil10.[F6]
If Dir("C:\Users\a.olaizola\Documents\SauvegardeDevis\" & dossierEnregistrement, vbDirectory) = "" Then _
MkDir "C:\Users\a.olaizola\Documents\SauvegardeDevis\" & dossierEnregistrement
''''''''''''''''''''''''''''''Enregistrement Fichier''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Plage As Object, oL As Object, oC As Object, Tmp$, Sep$
Sep = ";"
Set Plage = ActiveSheet.Range("A4:G" & ActiveSheet.Range("A2").End(xlUp).Row)
Open "C:\Users\a.olaizola\Documents\SauvegardeDevis\" & dossierEnregistrement & "\Infos.csv" For Output As #1
For Each oL In Plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
Close
'Call InsertData
End Sub
''''''''''''''''''''''''''''Enregistrement BDD''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'1) Connexion BDD
Private Sub ConnectionDB()
Dim S As String
Set oConnect = New ADODB.Connection
S = "DRIVER={MySQL ODBC 5.3 ANSI Driver};" & _
"SERVER=" & Sheets("BasedeDonnees").Range("B30").Text & ";" & _
"DATABASE=" & Sheets("BasedeDonnees").Range("B31").Text & ";" & _
"USER=" & Sheets("BasedeDonnees").Range("B32").Text & ";" & _
"PASSWORD=" & Sheets("BasedeDonnees").Range("B33").Text & ";" & _
"Option=3"
oConnect.Open S
MsgBox ("La BDD est ouverte")
End Sub
'2) Ajout à la BDD
Sub InsertData()
Dim Rs As ADODB.Recordset
Dim Requete As String
Set Rs = New ADODB.Recordset
Call ConnectionDB
With Sheets(4)
Requete = "INSERT INTO client(idClient, nomClient, adresseClient, villeClient, telContact, mailContact, siret) VALUES(" & _
.Cells(2, 1) & ", '" & _
.Cells(2, 2) & "', '" & _
.Cells(2, 3) & "', '" & _
.Cells(2, 4) & "', '" & _
.Cells(2, 5) & "', '" & _
.Cells(2, 6) & "', '" & _
.Cells(2, 7) & "')"
Rs.Open Requete, oConnect, adOpenDynamic, adLockOptimistic
End With
oConnect.Close
Set Rs = Nothing
End SubEt j'ai bien le "Public oConnect As ADODB.Connection" au début, si c'est ce que tu voulais me faire rajouter ^^
J'ai un peu honte...
Mon problème était que les informations n'étaient pas sur ma feuille 1 (ligne With sheet(1) ) mais sur la feuille 4 et c'est pour ca que j'ai tout qui planté...
Du coup je suis content, ca marche, mais par contre j'ai honte x)
Merci d'avoir répondu à mon appel a l'aide ceci dit, parce que c'est pas simple de trouver des réponses en période de vacances
Tiens, je retrouve ici du code qui vient de mon blog :
http://tatiak.canalblog.com/archives/2014/04/06/29605283.html
N'hésitez pas à citer vos sources ! 8)
Pierre Tatiak
Je n'ai pas récupéré ca sur ton blog, je ne saurai plus dire ou j'ai trouvé mon modèle a vrai dire, mais c'est la 1ère fois que j'arrive sur ton blog
desolé
Je n'ai pas récupéré ca sur ton blog, je ne saurai plus dire ou j'ai trouvé mon modèle a vrai dire, mais c'est la 1ère fois que j'arrive sur ton blog
desolé