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 :

Erreur 3113 sur mise à jour d'une base MySQL depuis Excel en DAO


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut Erreur 3113 sur mise à jour d'une base MySQL depuis Excel en DAO
    Bonjour à tous,

    Je ne sais pas si je suis dans le bon forum, mais je vais parler de BDD donc... on verra...

    J'expose mon soucis : je cherche à mettre à jour une table depuis des données Excel. J'utilise donc le "machin" microsoft DAO.
    Mon code est le suivant :

    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
     
    Set monWS = DAO.Workspaces(0)
    Set maBDD = monWS.OpenDatabase("gp", True, True, "ODBC")
     
    Range("a3").Select
    Set monRS_item = maBDD.OpenRecordSet("lvl1_items", dbOpenDynaset)
     
     StrChaineSQL = "INSERT INTO lvl1_items ( designation_FR, designation_GB, qty, groupe_marchandise, indice, supplier, contrat ) VALUES (" & _
                                                    Chr(34) & ActiveCell.Offset(0, 2) & Chr(34) & ", " & _
                                                    Chr(34) & ActiveCell.Offset(0, 3) & Chr(34) & ", " & _
                                                    Chr(34) & ActiveCell.Offset(0, 4) & Chr(34) & ", " & _
                                                    Chr(34) & ActiveCell.Offset(0, 5) & Chr(34) & ", " & _
                                                    Chr(34) & ActiveCell.Offset(0, 6) & Chr(34) & ", " & _
                                                    Chr(34) & ActiveCell.Offset(0, 7) & Chr(34) & ", " & _
                                                    Chr(34) & ActiveCell.Offset(0, 8) & Chr(34) & ")"
     
    maBDD.Execute StrChaineSQL
    VBA me renvoie une erreur 3113 :
    le champ 'designation_FR' n'est pas un champ pouvant être mis à jour.
    Le truc, c'est que quand j'exécute la commande SQL dans phpMyAdmin, la mise à jour se fait sans soucis.

    Le champ n'est pas incremental.

    J'ai bien essayé de changer les options dans les ouvertures de recordset, mais rien n'y fait.

    Merci d'avance pour votre aide.

    Voilà...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    la vrai syntaxe pour les string en Sql est le caractère [']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    StrChaineSQL = "INSERT INTO lvl1_items ( designation_FR, designation_GB, qty, groupe_marchandise, indice, supplier, contrat ) VALUES (" & _
                                                 "'" & ActiveCell.Offset(0, 2) & "'," & _
                                                 "'" & ActiveCell.Offset(0, 3) & "'," & _
                                                 "'" & ActiveCell.Offset(0, 4) & "'," & _
                                                 "'" & ActiveCell.Offset(0, 5) & "'," & _
                                                 "'" & ActiveCell.Offset(0, 6) & "'," & _
                                                 "'" & ActiveCell.Offset(0, 7) & "'," & _
                                                 "'" & ActiveCell.Offset(0, 8) & "');"
    maintenant tu dis que designation_FR n'est pas incrémental j'en conclus que c'est du numérique idem pour qty pas de [']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    StrChaineSQL = "INSERT INTO lvl1_items ( designation_FR, designation_GB, qty, groupe_marchandise, indice, supplier, contrat ) VALUES (" & _
                                                 ActiveCell.Offset(0, 2) & "," & _
                                                 "'" & ActiveCell.Offset(0, 3) & "'," & _
                                                 ActiveCell.Offset(0, 4) & "," & _
                                                 "'" & ActiveCell.Offset(0, 5) & "'," & _
                                                 "'" & ActiveCell.Offset(0, 6) & "'," & _
                                                 "'" & ActiveCell.Offset(0, 7) & "'," & _
                                                 "'" & ActiveCell.Offset(0, 8) & "');"

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    merci pour ta réponse...

    tu as raison et je vais tester avec les ' mais pourquoi ça passe quand je copie/colle l'instruction sql complete dans myadmin ??

  4. #4
    Invité
    Invité(e)
    Par défaut
    le connecteur DAO est plus regardant sur les type que MySql manger!
    on est chez Microsoft le Sql est plus étriqué!

    regarde ça: http://www.developpez.net/forums/d14...l/#post7860413

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    comme convenu... pas de changements...

    J'ai même essayé le minimalisme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    StrChaineSQL = "INSERT INTO lvl1_items (reference) VALUES ('D310400000')"
    maBDD.Execute StrChaineSQL
    des simples quote... des double quote... rien y fait

    J'ai donc changé mon fusil d'épaule et j'ai essayé ça :

    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
     
    Dim monWS As Workspace
    Dim maBDD As DAO.Database
    Dim monRS_item As DAO.Recordset
     
        Set monWS = DAO.Workspaces(0)
        Set maBDD = monWS.OpenDatabase("gp", True, True, "ODBC")
        Set monRS_item = maBDD.OpenRecordSet("lvl1_items", dbOpenDynaset)
     
        Range("a3").Select    
        Do Until ActiveCell = ""
            With monRS_item
                .AddNew
                .Fields(0) = ActiveCell
                .Fields(1) = ActiveCell.Offset(0, 1)
                .Fields(2) = ActiveCell.Offset(0, 2)
                .Fields(3) = ActiveCell.Offset(0, 3)
                .Fields(4) = ActiveCell.Offset(0, 4)
                .Fields(5) = ActiveCell.Offset(0, 5)
                .Fields(6) = ActiveCell.Offset(0, 6)
                .Fields(7) = ActiveCell.Offset(0, 7)
                .Fields(8) = ActiveCell.Offset(0, 8)
                .Update
            End With
     
            ActiveCell.Offset(1, 0).Select
        Loop
    la connexion ODBC 'gp' est configurée pour un user avec les droits équivalent a "root".

    et le message d'erreur est le suivant : erreur 3027 :mise a jour impossible. La base de données ou l'objet est en lecture seule.

    J'ai essayé toutes les options que microsoft nous donne pour la commande "openrecordset".

    Je tourne en rond.

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    BON... j'ai trouvé...

    il fallait faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set maBDD = monWS.OpenDatabase("gp", True, FALSE, "ODBC")
    et pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set maBDD = monWS.OpenDatabase("gp", True, TRUE, "ODBC")
    quel boulot !!!!!!

    merci pour votre aide.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/01/2015, 15h43
  2. [AC-2000] Problème de mise à jour d'une base sur réseau
    Par Dermochelys dans le forum Runtime
    Réponses: 2
    Dernier message: 04/02/2010, 13h43
  3. mise à jour d'une base
    Par le géologue dans le forum Access
    Réponses: 7
    Dernier message: 17/11/2005, 09h46
  4. mise à jour d'une base de données
    Par flo83 dans le forum ASP
    Réponses: 6
    Dernier message: 12/06/2005, 20h27

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