1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2017
    Messages : 50
    Points : 29
    Points
    29

    Par défaut Requête sql update en vba

    Salut. j'ai une erreur de syntaxe dans ma requête mais je sait pas oû exactement.
    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
     
    Function test(strProd As String, nbQtProd As Double)
    Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
    Dim sSQL As String
    Dim libP As String
    Dim nVal As Double
     
        ' Ouverture de la base de données
    Set db = CurrentDb()
        sSQL = "SELECT Produit.qtProd " & _
                "FROM Produit " & _
                "WHERE (((Produit.libProd) = '" & strProd & "')) " & _
                "; "
        ' Ouverture du Recordset
        Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
     
        nVal = nbQtProd + CDbl(rst!qtProd)
     
    'on me signale une erreur se syntaxe à ce niveau
        CurrentDb.Execute ("UPDATE Produit " & _
                   "SET (((Produit.qtProd) =  '" & nVal & "' )) " &
                   "WHERE (((Produit.libProd) = '" & strProd & "')) " & _
                   "; ")
        MsgBox "Ajout effectué avec succès."
     
        ' Fermeture du Recordset
        rst.Close
    End Function
    j'obtient une erreur se syntaxe pour le CurrentDb.Execute ....
    Merci pour toute aide.

  2. #2
    Membre éclairé
    Inscrit en
    août 2008
    Messages
    506
    Détails du profil
    Informations forums :
    Inscription : août 2008
    Messages : 506
    Points : 721
    Points
    721

    Par défaut

    Bonjour,

    si nval est un nombre, il ne doit pas être utilisé entre des guillements

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CurrentDb.Execute ("UPDATE Produit " & _
                   "SET (((Produit.qtProd) =  " & nVal & " )) " &
                   "WHERE (((Produit.libProd) = '" & strProd & "')) " & _
                   "; ")

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2017
    Messages : 50
    Points : 29
    Points
    29

    Par défaut

    avec xa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CurrentDb.Execute ("UPDATE Produit " & _
                   "SET (((Produit.qtProd) =  " & nVal & " )) " & _
                   "WHERE (((Produit.libProd) = '" & strProd & "')) " & _
                   "; ")
    j'obtient toujours erreur d'exécution 3144
    erreur de syntaxe dans l'instruction update

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 793
    Points : 16 178
    Points
    16 178

    Par défaut

    Bonjour.

    Le SQL de Access peut être un peu délicat à écrire par soi-même.

    Je te suggère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim sql as string : sq="UPDATE Produit " & _
                   "SET (((Produit.qtProd) =  " & nVal & " )) " & _
                   "WHERE (((Produit.libProd) = '" & strProd & "')) " & _
                   ";"
    call CurrentDb.Execute(sql, dbFailOnError)
    L'avantage de passer par une variable intermédiaire c'est que tu vas pouvoir voir le SQL généré par Access avant qu'il s'exécute.
    Un des problèmes classiques avec les nombres c'est le séparateur de décimales qui n'est pas bon : le point au lieu de la virgule ou vice-versa.
    Le SQL parle anglais donc en principe ce devrait être un point.
    L'autre problème classique c'est quand le nombre est null.
    Lors de la concaténation le null est remplacé par une chaîne vide et cela donne un truc du genre set TonChamp= where qui n'est pas syntaxiquement correct.

    Ceci dit la meilleur méthode pour écrire du SQL Access c'est de le faire écrire par Access
    Tu vas dans l'éditeur de requête et tu crées ta requête avec des glisser/déplacer.
    Une fois qu'elle donne les résultats attendus, tu changes l'affichage (c'est en haut à gauche de l'écran) pour "SQL" et tu regardes la syntaxe générée.
    Il est généralement assez facile d'en faire du code VBA.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Aide requête SQL - UPDATE phpmyadmin
    Par laulau37 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/06/2007, 11h19
  2. Requête SQL UPDATE dans VBA
    Par Pingouin22 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/12/2006, 23h45
  3. [VBA][SQL] code pour requete sql update en vba
    Par titocv723 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 24/10/2006, 18h45
  4. Aide Requête SQL (UPDATE)
    Par Glowprod dans le forum MS SQL-Server
    Réponses: 4
    Dernier message: 26/07/2006, 15h04
  5. Access - Requête SQL - UPDATE
    Par tchoo83 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 19/12/2005, 16h48

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