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 :

mySQL DAO update impossible


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 mySQL DAO update impossible
    bonjour,

    je cherche a mettre a jour une base mySQL a partir de données excel avec vba et DAO;

    La routine bloque au moment de l'update avec comme message d'erreur : erreur d'execution 3146 - ODBC - l'appel a échoué.

    voici mon code :
    Code vba : 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
     
    Sub MAJ_BDD_Nomenclature()
     
        Dim maBDD As DAO.Database
        Dim monRS_test_exist As DAO.Recordset
        Dim monRS_update_BDD As DAO.Recordset
     
        Dim monWS As Workspace
     
        Set monWS = DAO.Workspaces(0)
        Set maBDD = monWS.OpenDatabase("gp", False, False, "ODBC")
     
        MsgBox ("Ouvrez le fichier contenant l'extraction SAP brute (LVL 3 ) adéquate")
        Application.FindFile
        extractSAP = ActiveWorkbook.Name
     
        Range("B14").Select
     
        If ActiveCell.Offset(0, 2) = 1 Then
            reference_xls = ActiveCell.Offset(0, 4)
            designation_FR_xls = ActiveCell.Offset(0, 5)
            designation_GB_xls = ActiveCell.Offset(0, 6)
            qty_xls = ActiveCell.Offset(0, 7)
            groupe_marchandise_xls = ActiveCell.Offset(0, 16)
            indice_xls = ActiveCell.Offset(0, 18)
            supplier_xls = ActiveCell.Offset(0, 19)
            contrat_xls = Left(Range("F7"), 6)
     
            requete_test = "select * from lvl1_items WHERE reference = " & Chr("34") & reference_xls & Chr("34") & _
                                                     " AND designation_GB = " & Chr("34") & designation_GB_xls & Chr("34") & _
                                                     " AND qty = " & Chr("34") & qty_xls & Chr("34") & _
                                                     " AND contrat = " & Chr("34") & contrat_xls & Chr("34") & ";"
     
            Range("L5") = requete_test
            Set monRS_test_exist = maBDD.OpenRecordSet(requete_test)
     
            If Not monRS_test_exist.NoMatch Then 'la ligne n'existe pas
     
                Set monRS_update_BDD = maBDD.OpenRecordSet("lvl1_items", dbOpenDynaset)
     
                With monRS_update_BDD
                    .AddNew
                    .Fields(1) = reference_xls
                    .Fields(2) = designation_FR_xls
                    .Fields(3) = designation_GB_xls
                    .Fields(4) = qty_xls
                    .Fields(5) = groupe_marchandise_xls
                    .Fields(6) = "A" 'indice_xls
                    .Fields(7) = supplier_xls
                    .Fields(8) = contrat_xls
                    .Update
                End With
     
            Else
     
            End If
        End If
     
        If ActiveCell.Offset(0, 2) = 2 Then
     
        End If
     
        If ActiveCell.Offset(0, 2) = 3 Then
     
        End If
    End Sub

    J'ai essayé pas mal de "trucs" différents mais rien n'y fait.

    Si vous avez des idées...

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    déjà problème sur la requête!
    les chr attend le code ACCII pas un string chr(34)

    de plus tu en a pas besoin!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    requete_test = "select * from lvl1_items WHERE reference = '" & reference_xls & "'" & _
                                                     " AND designation_GB = '" & designation_GB_xls & "'" & _
                                                     " AND qty = '" & qty_xls & "'" & _
                                                     " AND contrat = '" & contrat_xls & "';"
    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
     Set monRS_test_exist = maBDD.OpenRecordSet(requete_test)
            If monRS_test_exist.EOF = True Then 'la ligne n'existe pas
     
     
                With monRS_test_exist
                    .AddNew
                    .Fields(0) = reference_xls
                    .Fields(1) = designation_FR_xls
                    .Fields(2) = designation_GB_xls
                    .Fields(3) = qty_xls
                    .Fields(4) = groupe_marchandise_xls
                    .Fields(5) = "A" 'indice_xls
                    .Fields(6) = supplier_xls
                    .Fields(7) = contrat_xls
                    .Update
                End With
     
            Else
     
            End If

Discussions similaires

  1. [MySQL] php mysql update impossible
    Par bleuindigo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/03/2010, 13h42
  2. [forms 6i]UPDATE IMPOSSIBLE
    Par pjcejbpojo dans le forum Forms
    Réponses: 5
    Dernier message: 06/05/2006, 14h09
  3. Erreur MySQL sur Update
    Par shub dans le forum Administration
    Réponses: 5
    Dernier message: 04/04/2006, 15h15
  4. Réponses: 5
    Dernier message: 14/03/2006, 16h12
  5. Windows Update impossible, problème installation WGA
    Par iubito dans le forum Windows XP
    Réponses: 3
    Dernier message: 16/12/2005, 08h58

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