IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

problème chaîne de connexion MySql/Odbc5.2 + procédure stockée [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut problème chaîne de connexion MySql/Odbc5.2 + procédure stockée
    Bonjour,

    Je tente de me connecter à une BDD MySql via ADODB, sans succès. Ca plante avec le message: "source de données introuvable et nom de pilote non spécifié".
    Avec OLEDB par contre pas de problème. Cependant, j'ai besoin de ODBC pour lancer des procédures stockées (impossible avec OLEDB: bug Microsoft reconnu)

    Voilà mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim cnx As ADODB.Connection
    Dim Cmd As ADODB.Command
    Dim rst As ADODB.Recordset
    Dim NomUtilisateur As String, MotDePasse As String, NomServeur As String, BaseDeDonnees As String
     
    NomUtilisateur = "root"
    MotDePasse = ""
    BaseDeDonnees = "bd_gestplanning"
     
    'La connexion
    Set cnx = New ADODB.Connection
     
    'Définition de la chaîne de connexion
    '- OLEDB
    'cnx.ConnectionString = "Provider=MySQLProv;Server=localhost;Data Source=" & BaseDeDonnees & ";User Id=" & NomUtilisateur & ";Password=" & MotDePasse & ";"
    '- ODBC
    cnx.ConnectionString = "Provider=MSDASQL;Driver={MySQL ODBC 5.2 ANSI Driver};Server=localhost;Database=" & BaseDeDonnees & ";User=" & NomUtilisateur & ";Password=" & MotDePasse & ";Option=3;"
    'Ouverture de la base de données
    cnx.Open  'plantage : "source de données introuvable et nom de pilote non spécifié..."
    Ma config:
    Windows 8-64 bits
    Excel 2010-32 bits
    Driver ODBC : "Mysql ODBC 5.2"
    MySql 5.6.12

    J'ai récupéré la chaîne de connexion ici: http://www.connectionstrings.com/mysql/

    Je ne vois pas trop ce qui cloche.

    Merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Bonjour,

    Alors j'ai résolu mon problème:
    - J'ai installé Mysql ODBC 5.1 pour reprendre la chaine de connexion (au moins elle a été testée et validée) fournie par Robert (Merci à toi).
    - Ça n'a pas marché avec la version 64 bits de Mysql ODBC 5.1 mais en 32 c'est ok. Jen pense d'ailleurs que c'était le même problème avec la version 64 de Mysql ODBC 5.2 mais pas le temps de retenter.

    Pour ceux que ça intéresse, le bug Microsoft dont je parlais avec OLEDB et les procédures stockées sous Oracle est décrit ici. C'est avec ça que j'en ai déduit que le même problème devait se poser avec MySQL (même message d'erreur sur la même ligne de code).

    J'ajoute le code complet ci dessous plus pour la syntaxe que pour le contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Sub Test_ADO()
     
        Dim tabIndispos As Variant
        Dim i As Integer, j As Integer, k As Integer
        Dim dateDeb As Date, dateFin As Date
        Dim motif As String, codeIntervenant As String
     
        Dim cnx As ADODB.Connection
        Dim Cmd As ADODB.Command
        Dim NomUtilisateur As String, MotDePasse As String, NomServeur As String, BaseDeDonnees As String
     
        NomUtilisateur = "root"
        MotDePasse = ""
        NomServeur = "localhost"
        BaseDeDonnees = "bd_gestplanning"
     
        'La connexion
        Set cnx = New ADODB.Connection
     
        'Définition de la chaîne de connexion
        '- OLEDB
        'cnx.ConnectionString = "Provider=MySQLProv;Server=localhost;Data Source=" & BaseDeDonnees & ";User Id=" & NomUtilisateur & ";Password=" & MotDePasse & ";"
        '- ODBC
        cnx.ConnectionString = " DRIVER={MySQL ODBC 5.1 Driver};SERVER=" & NomServeur & ";UID=" & NomUtilisateur & ";DATABASE=" & BaseDeDonnees & ";Password=" & MotDePasse
     
        'Ouverture de la base de données
        Debug.Print cnx.ConnectionString
        cnx.Open
     
        'Paramétrage Command
        Set Cmd = New ADODB.Command
        With Cmd
            .ActiveConnection = cnx
            .CommandText = "P_Add_Indispos"
            .CommandType = adCmdStoredProc
        End With
     
        tabIndispos = ThisWorkbook.Names("Indispos").RefersToRange
        k = 1
        For i = LBound(tabIndispos, 1) + 3 To UBound(tabIndispos, 1)
            For j = LBound(tabIndispos, 2) To UBound(tabIndispos, 2) Step 3
                dateDeb = tabIndispos(i, j)
                If Len(CStr(dateDeb)) <> 0 Then
                    dateFin = tabIndispos(i, j + 1)
                    motif = CStr(tabIndispos(i, j + 2))
                    codeIntervenant = Format(k, "0000")
                   'Lancement de la procédure stockée
                    With Cmd
                        .Parameters.Refresh   'plante avec OLEDB
                        .Parameters(0).Value = codeIntervenant
                        .Parameters(1).Value = dateDeb
                        .Parameters(2).Value = dateFin
                        .Parameters(3).Value = motif
                        .Execute
                    End With
                End If
            Next j
            k = k + 1
        Next i
     
        cnx.Close
        Set cnx = Nothing
        Set Cmd = Nothing
     
    End Sub
    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [GWT] Problème JEE ? Et connexion MySql
    Par glub0x dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 01/07/2011, 18h21
  2. Problème Properties lors connexion MySQL 3.51 Driver
    Par bobinette33 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/07/2010, 16h59
  3. Problème lors de l'appel d'une procédure stockée
    Par ToxiZz dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/05/2006, 23h42
  4. Problème de récup de résultats d'une procédure stockée
    Par an_merle dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 12/01/2006, 10h08
  5. problème innatendu de connexion mysql
    Par gilles74 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/11/2005, 18h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo