OVH Cloud OVH Cloud

connection ODBC MySQL

3 réponses
Avatar
Laurent
Bonjour,
J'ai t=E9l=E9charger le driver suivant:=20
MyODBC-standard-3.51.8-win.exe
je l'ai execut=E9 et il s'est install=E9.
Mais je suis perdu ensuite pour importer les donn=E9es qui=20
m'interressent.
Je souhaite par exemple r=E9cup=E9rer le dernier=20
enregistrement de la table 'nigeria' de la=20
base 'indicateur'.
Pourriez vous m'expliqu=E9 la marche =E0 suivre ou un lien=20
m'expliquant comment proc=E9d=E9?
Merci d'avance.
Cordialement Laurent

3 réponses

Avatar
michdenis
Bonjour Laurent,

Voici une façon de faire en utilisant ADO (activex data object). Personnellement, je n'ai jamais eu l'occasion de tester
cette approche avec MySQL.

Pour exécuter ce code, tu dois ajouter à ton projet, la référence suivante :

Microsoft activex data objects 2.0 librairy

Pour ce faire, dans la feneêtre VBE(visual basic editor), barre des menus / outils / référence / et tu coches la
référence mentionnée.

Dans cette procédure, tu dois renseigner convenablement les 3 variables suivantes :

CheminDb = Chemin + Nom du fichier base de données + extension du fichier
NomTable = "Nigeria"
Requête = "Select * From " & NomTable & ""
'Ceci extrait tous les enregistrements de ta table.

Enfin ceci : Ton nom d'utilisateur et ton mot de passe.
"User Id=myUsername;" & _
"Password=myPassword"

Si cela fonctionne, il y a moyen de raffiner un peu pour extraire seulement le dernier enregistrement.


'-------------------
Sub ImporterDesDonnéesDeAccess()

Dim X As Integer, C As Integer
Dim Cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Rg As Range, Sh As Worksheet
Dim NbEnr As Long, CheminDb As String
Dim NomTable As String, NomFeuille As String
Dim Requete As String

CheminDb = "C:Mes documentsindicateurAvecExtensionDeFichier"
NomTable = "Nigeria"

'Le texte de la requête
Requete = "Select * From " & NomTable & ""


Cnt.Open "Provider=MySQLProv;" & _
"Data Source=" & CheminDb & ";" & _
"User Id=myUsername;" & _
"Password=myPassword"

'Ouverture du recordset
Rst.Open Requete, Cnt, adOpenStatic

'Si aucun enregistrement est trouvé lors de la requête
If Rst.RecordCount = 0 Then
MsgBox "Aucun enregistrement trouvé." & vbCrLf & _
"Fin de l'opération.", vbInformation + vbOKOnly, "Annulation"
' Ferme la connection et le recordset
Rst.Close: Cnt.Close
'Libère la mémoire vive occupée par les objets
Set Rst = Nothing: Set Cnt = Nothing
Set Rg = Nothing: Set Sh = Nothing
Exit Sub
End If

'Éviter le rafraîchissement de l'écran
Application.ScreenUpdating = False

'Conserve dans une variable le nom de la feuille active.
NomFeuille = ThisWorkbook.ActiveSheet.Name

'Ajoute une nouvelle feuille où seront acheminées les données
Set Sh = Worksheets.Add

'détermine la cellule supérieur gauche où
'le recordset va être copié
With Sh
Set Rg = .Range("A1")
End With

'Si tu es intéressé de récupérer directement les noms
'des champs de ton recordset, tu peux utiliser ce
'qui suit :

Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
X = X + 1
Loop Until X = Rst.Fields.Count

Rg.Offset(1).CopyFromRecordset Rst

'Sélection de la feuille au départ de la procédure
Worksheets(NomFeuille).Select

' Ferme la connection et le recordset
Rst.Close: Cnt.Close

'Libère la mémoire vive occupée par les objets
Set Rst = Nothing: Set Cnt = Nothing
Set Rg = Nothing: Set Sh = Nothing

End Sub
'------------------------------------------


Salutations!




"Laurent" a écrit dans le message de
news:2449201c45f4d$6b1957c0$
Bonjour,
J'ai télécharger le driver suivant:
MyODBC-standard-3.51.8-win.exe
je l'ai executé et il s'est installé.
Mais je suis perdu ensuite pour importer les données qui
m'interressent.
Je souhaite par exemple récupérer le dernier
enregistrement de la table 'nigeria' de la
base 'indicateur'.
Pourriez vous m'expliqué la marche à suivre ou un lien
m'expliquant comment procédé?
Merci d'avance.
Cordialement Laurent
Avatar
michdenis
Bonjour DD,

Si tu préfères utiliser une ODBC, beaucoup de documentation sur le sujet à cette adresse :

http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vccore/html/_core_database_topics_.28.odbc.29.asp


Salutations!




"Laurent" a écrit dans le message de
news:2449201c45f4d$6b1957c0$
Bonjour,
J'ai télécharger le driver suivant:
MyODBC-standard-3.51.8-win.exe
je l'ai executé et il s'est installé.
Mais je suis perdu ensuite pour importer les données qui
m'interressent.
Je souhaite par exemple récupérer le dernier
enregistrement de la table 'nigeria' de la
base 'indicateur'.
Pourriez vous m'expliqué la marche à suivre ou un lien
m'expliquant comment procédé?
Merci d'avance.
Cordialement Laurent
Avatar
Laurent
Merci pour toutes ces informations.
Cordialement
-----Message d'origine-----
Bonjour Laurent,

Voici une façon de faire en utilisant ADO (activex data
object). Personnellement, je n'ai jamais eu l'occasion de

tester
cette approche avec MySQL.

Pour exécuter ce code, tu dois ajouter à ton projet, la
référence suivante :


Microsoft activex data objects 2.0 librairy

Pour ce faire, dans la feneêtre VBE(visual basic editor),
barre des menus / outils / référence / et tu coches la

référence mentionnée.

Dans cette procédure, tu dois renseigner convenablement
les 3 variables suivantes :


CheminDb = Chemin + Nom du fichier base de données +
extension du fichier

NomTable = "Nigeria"
Requête = "Select * From " & NomTable & ""
'Ceci extrait tous les enregistrements de ta table.

Enfin ceci : Ton nom d'utilisateur et ton mot de passe.
"User Id=myUsername;" & _
"Password=myPassword"

Si cela fonctionne, il y a moyen de raffiner un peu pour
extraire seulement le dernier enregistrement.



'-------------------
Sub ImporterDesDonnéesDeAccess()

Dim X As Integer, C As Integer
Dim Cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Rg As Range, Sh As Worksheet
Dim NbEnr As Long, CheminDb As String
Dim NomTable As String, NomFeuille As String
Dim Requete As String

CheminDb = "C:Mes
documentsindicateurAvecExtensionDeFichier"

NomTable = "Nigeria"

'Le texte de la requête
Requete = "Select * From " & NomTable & ""


Cnt.Open "Provider=MySQLProv;" & _
"Data Source=" & CheminDb & ";" & _
"User Id=myUsername;" & _
"Password=myPassword"

'Ouverture du recordset
Rst.Open Requete, Cnt, adOpenStatic

'Si aucun enregistrement est trouvé lors de la requête
If Rst.RecordCount = 0 Then
MsgBox "Aucun enregistrement trouvé." & vbCrLf & _
"Fin de l'opération.", vbInformation +
vbOKOnly, "Annulation"

' Ferme la connection et le recordset
Rst.Close: Cnt.Close
'Libère la mémoire vive occupée par les objets
Set Rst = Nothing: Set Cnt = Nothing
Set Rg = Nothing: Set Sh = Nothing
Exit Sub
End If

'Éviter le rafraîchissement de l'écran
Application.ScreenUpdating = False

'Conserve dans une variable le nom de la feuille active.
NomFeuille = ThisWorkbook.ActiveSheet.Name

'Ajoute une nouvelle feuille où seront acheminées les
données

Set Sh = Worksheets.Add

'détermine la cellule supérieur gauche où
'le recordset va être copié
With Sh
Set Rg = .Range("A1")
End With

'Si tu es intéressé de récupérer directement les noms
'des champs de ton recordset, tu peux utiliser ce
'qui suit :

Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
X = X + 1
Loop Until X = Rst.Fields.Count

Rg.Offset(1).CopyFromRecordset Rst

'Sélection de la feuille au départ de la procédure
Worksheets(NomFeuille).Select

' Ferme la connection et le recordset
Rst.Close: Cnt.Close

'Libère la mémoire vive occupée par les objets
Set Rst = Nothing: Set Cnt = Nothing
Set Rg = Nothing: Set Sh = Nothing

End Sub
'------------------------------------------


Salutations!




"Laurent" a écrit
dans le message de

news:2449201c45f4d$6b1957c0$
Bonjour,
J'ai télécharger le driver suivant:
MyODBC-standard-3.51.8-win.exe
je l'ai executé et il s'est installé.
Mais je suis perdu ensuite pour importer les données qui
m'interressent.
Je souhaite par exemple récupérer le dernier
enregistrement de la table 'nigeria' de la
base 'indicateur'.
Pourriez vous m'expliqué la marche à suivre ou un lien
m'expliquant comment procédé?
Merci d'avance.
Cordialement Laurent


.