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 :

Vba requete pour MYSQL par ODBC


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut Vba requete pour MYSQL par ODBC
    Bonjour a tous,

    J'ai trouvé une solution pour importer une requete vers mysql grace à developpez.com.

    J'arrive a faire fonctionner ma requete avec mysql de easyphp en local(pour tester).
    Dès que j'essai de faire la meme chose pour un serveur distant, la requete ne s'éxecute pas. Pas d'erreur dans VBA.
    Pourtant lorsque je fais un test dans ODBC, il me confirme la connection au serveur d'ailleurs il trouve toutes les bases de données.

    J'ai vérifié et mis exactement la meme structure et le meme nom de table.

    J'ai changé uniquement le dsn dans vba
    cnn.Open "ODBC;DATABASE=peofofo;DSN=site_peofofo;"
    'cnn.Open "ODBC;DATABASE=test;DSN=easyphp;"

    Mais rien ne se passe sur le serveur distant.
    Est il possible de mettre des erreurs sur la connection ou les requetes
    comme en php or die ('Erreur :'.mysql_error()); mais en vba ?

    Voici ma macro:
    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
    Private Sub CommandButton1_Click()
     
    'Déclaration de variable
    Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset
    Dim MaCommand As ADODB.Command
    Dim Num_OL As Double
    Dim Num_SAP As String
    Dim Text_SQL As String
     
    ' Ouverture de la connexion à la base de donnée
     
    cnn.Open "ODBC;SERVEUR=sql.serveur_peofofo.com;DSN=peofofo;"
    'cnn.Open "ODBC;DATABASE=test;DSN=easyphp;"
        champ_1 = Cells(1, 2).Value
        champ_2 = Cells(1, 3).Value
        champ_3 = Cells(1, 4).Value
        champ_4 = Cells(1, 5).Value
        champ_5 = Cells(1, 6).Value
    If Num_OL = 1 Then
            'Requète pour insérer une ligne de commande
            Text_SQL = "INSERT INTO essai VALUES (null," & champ_1 & " ," & champ_2 & ", " & champ_3 & ", " & champ_4 & " ," & champ_5 & ")"
            Set MaCommand = New ADODB.Command
            MaCommand.ActiveConnection = cnn
            MaCommand.CommandText = Text_SQL
            Set MonRs = MaCommand.Execute(, , adAsyncExecute)
    Else
    T$ = "Attention"      'Titre du message
    M$ = "Probème avec le compte de " & Num_OL     'Message à afficher
    Reponse% = MsgBox(M$, 0 + 48, T$)
     
    End If
     
     
     
    cnn.Close   'Fermeture de la connection à la base de donnée
     
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour peofofo, bienvenue sur le forum.
    As-tu une erreur ? Eventuellement, sur quelle ligne ?
    Pour la gestion d'erreur, je pense que tu parles d'une vérification de la connexion... (?)
    Juste pour éclairer celui qui pourra te répondre... Visiblement, en ce moment il dort encore. Patience

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Merci de ta réponse ouskel'n'or
    Je n'est pas d'erreur sur le script.
    Effectivement, je cherche un moyen de connaitre l'erreur de connection.

    Je pense que le problème vient de la connection, il faut peut etre pas mettre simplement le dsn dans la connection ?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour,
    Encore moi. As-tu fait une recherche "Dans ce forum" ? Barre d'outils immédiatement en dessus des sujets de discussions.
    J'ai trouvé cinq pages de discussions où on traite le sujet avec "SQL" comme mot clé. Cé ben le diable si tu trouves pas ton bonheur...
    Bonne chance

    (va quand même falloir que je m'y mette ! )

  5. #5
    Membre éprouvé
    Inscrit en
    Mai 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 104
    Par défaut
    Bonjour,
    Et "à la main" (Données, Données externes, Créer une requête) ça dit quoi ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Citation Envoyé par Bevan Voir le message
    Bonjour,
    Et "à la main" (Données, Données externes, Créer une requête) ça dit quoi ?
    Il me dit que Microsoft Query n'est pas installé.
    Si ça marche en local, ça devrait marcher sur un serveur distant.

    ouskel'n'or --> J'ai fais plein de recherches sans réel résultat.
    J'ai fais tellement de tests que je ne me souviens plus de ce que j'ai testé.

    Le problème c'est que je n'est pas d'erreur, ma macro s'execute sans problème. Mais sans importer les données.
    Je suis resté bloqué sur ce problème depuis le mois de mars.

    A mon avis, le problème vient plus de la connection par ODBC car je n'ai rien changé sur excel.
    Pourtant lorsque je test le serveur distant sur ODBC il me trouve le serveur et également toutes les base de données. J'ai pourtant bien sélectionner la bonne base, je ne comprend pas!?

    C'est pour ces raisons que je poste mon problème afin de connaitre la possibilité quelqu'un qui connait mon problème.

    ouskel'n'or --> Tu m'as dit dans un précédent message que quelqu'un pourrait peut etre trouver, peus tu me donner son pseudo afin que je puisse lui envoyer un MP?

    Merci

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par peofofo
    ouskel'n'or --> Tu m'as dit dans un précédent message que quelqu'un pourrait peut etre trouver, peus tu me donner son pseudo afin que je puisse lui envoyer un MP ?
    Non mais tu peux les trouver dans une recherche dans ce forum, à SQL

  8. #8
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Merci a tous,

    J'ai essayé de débloquer le port 3306.
    Mais rien n'a changé au problème.
    J'ai trouvé un site http://www.erlandsendata.no/english/...adacconnstring qui indique comment se connecter, j'ai essayé plein de truc, toujours pareil pas d'erreur et pas d'envoi.

    Je sais plus quoi essayer.

  9. #9
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour à tout le forum,

    Que veux-tu faire exactement ?

    Importé et lire des valeurs ?
    Ecrire dans une base ?

    Tout ton code est là ?

    Ou est initialisé Num_OL ?
    Ou est rst ?

    Ou est défini MonRs ? (Option Explicit)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cnn.Open "ODBC;SERVEUR=sql.serveur_peofofo.com;DSN=peofofo;"
    'cnn.Open "ODBC;DATABASE=test;DSN=easyphp;"
    Ca me semble radicalement différent

    Fait une recherche sur le forum avec ODBC , tu trouvera peut être une orientation

    Pas de MP svp

  10. #10
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Merci Jean Pierre49 de ta réponse.

    J'ai fais beaucoup d'essais, et j'ai oublié de modifier la déclaration des variables.

    J'ai réussi a envoyer mes requetes graces au recordset.
    Le script fonctionne sur le serveur distant désormais.

    Merci à tous
    Pour ceux qui souhaite obtenir le code
    Le voilà:
    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
    66
    67
    Private Sub CommandButton1_Click()
    'Déclaration de variable
    Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset
    Dim MaCommand As ADODB.Command
    Dim Ligne As Integer
    Dim champ_1 As String
    Dim champ_2 As String
    Dim champ_3 As String
    Dim champ_4 As String
    Dim champ_5 As String
     
    'effacement des anciennes donées
    Range(Cells(1, 2), Cells(65536, 6)).Select
    Selection.ClearContents
    Cells(1, 1).Select
     
    ' Ouverture de la connexion à la base de donnée
    'cnn.Open "ODBC;DATABASE=test;DSN=easyphp;UID=root"
    cnn.Open "ODBC;DATABASE=peofofo;DSN=serveur_peofofo;UID=root"
     
    'appel de la requète SQL Semaine
    Text_SQL = "SELECT champ_1, champ_2, champ_3, champ_4, champ_5 FROM essai_table"
    rst.Open Text_SQL, cnn, adOpenForwardOnly, adLockReadOnly
    If Not (rst.EOF And rst.BOF) Then
        rst.MoveFirst
        Ligne = 1
        While Not (rst.EOF)
            For i = 0 To 4
                Cells(Ligne, 2 + i).Value = rst.Fields(i).Value
            Next i
            Ligne = Ligne + 1
            rst.MoveNext
        Wend
    End If
    rst.Close       'Fermeture de la requète
    cnn.Close       'Fermeture de la connection
    End Sub
    Private Sub CommandButton2_Click()
     
    'Déclaration de variable
    Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset
    Dim MaCommand As ADODB.Command
    Dim champ_1 As Double
    Dim champ_2 As String
    Dim champ_3 As String
    Dim champ_4 As String
    Dim champ_5 As String
     
    ' Ouverture de la connexion à la base de donnée
    'cnn.Open "ODBC;DATABASE=test;DSN=easyphp;UID=root"
    cnn.Open "ODBC;DATABASE=peofofo;DSN=serveur_peofofo;UID=root"
     
        champ_1 = Cells(1, 8).Value
        champ_2 = Cells(1, 9).Value
        champ_3 = Cells(1, 10).Value
        champ_4 = Cells(1, 11).Value
        champ_5 = Cells(1, 12).Value
     
            'Requète pour insérer une ligne de commande
     
            Text_SQL = "INSERT INTO essai_table VALUES (null," & champ_1 & " ," & champ_2 & ", " & champ_3 & ", " & champ_4 & " ," & champ_5 & ")"
           rst.Open Text_SQL, cnn, adOpenForwardOnly, adLockReadOnly
     
     
    cnn.Close   'Fermeture de la connection à la base de donnée
     
    End Sub
    Seul bémole c'est que je ne peus pas fermer la requete rst pour la dernière macro car il me met une erreur
    Donc je l'ai supprimer

    Merci à tous pour votre aide, j'ai avancé à grand pas, et je peus maintenant garantir la faisabilité du projet.
    Merci

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

Discussions similaires

  1. Connexion MYSQL par ODBC
    Par Cantalou dans le forum Administration
    Réponses: 1
    Dernier message: 01/03/2010, 10h54
  2. Import Tables MySQL par ODBC
    Par viougt dans le forum Administration et Installation
    Réponses: 3
    Dernier message: 18/01/2010, 15h29
  3. Réponses: 4
    Dernier message: 15/04/2008, 11h43
  4. [VB.NET][MySQL]ID insertion dans une base MySQL par ODBC
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/03/2006, 10h58
  5. requete pour compter par date
    Par smariteau dans le forum Requêtes
    Réponses: 8
    Dernier message: 10/01/2006, 00h10

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