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

VBA Access Discussion :

Erreur de syntaxe dans l'instruction INSERT INTO [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Par défaut Erreur de syntaxe dans l'instruction INSERT INTO
    Bonjour,

    J'ai un formulaire DEVIS (qui comprend un sous-formulaire DETAIL DEVIS), j'ai créé un bouton qui ouvre un formulaire de COMMANDE (qui comprend un sous-formulaire DETAIL CDE) vierge et qui remplit les champs suivant le code VBA 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub Commande379_Click()
    On Error GoTo Err_Commande379_Click
     
    Dim stDocNmae As String
     
    stDocName = "FORM-COMMANDE"
    DoCmd.OpenForm stDocName, acNormal, "", "", acAdd, acNormal
     
    Forms![FORM-COMMANDE]![IDCatégorie] = IDCatégorie
    Forms![FORM-COMMANDE]![Analytique] = Analytique
    Forms![FORM-COMMANDE]![IDDevis&] = IDDevis
    Forms![FORM-COMMANDE]![IDClient] = IDClient
    Forms![FORM-COMMANDE]![IDSites] = IDSites
    Forms![FORM-COMMANDE]![Offre N°] = Me.S_F_DETAIL_DEVIS![id_offreprix]
    Forms![FORM-COMMANDE]![IDFournisseurs] = Me.S_F_DETAIL_DEVIS![IDFournisseur]
    Forms![FORM-COMMANDE].Refresh
     
    DoCmd.SetWarnings False
    monsql = "INSERT INTO [RQ-DETAIL CDE](dESIGNATION, Reference, Prix Net HT, Quantite) SELECT " & Forms![FORM-DEVIS].IDDevis & ", Produit, Reference, PrixAchatHT, Quantite FROM [T-DetailDevis] WHERE IDCommande=" & Forms![FORM-COMMANDE]!IDCommande
    DoCmd.RunSQL monsql
    Forms![FORM-COMMANDE]![S/FORM-DETAIL CDE].Requery
    DoCmd.SetWarnings True
     
    Exit_Commande379_Click:
        Exit Sub
     
    Err_Commande379_Click:
        MsgBox Err.Description
        Resume Exit_Commande379_Click
     
    End Sub
    Toute la première partie se remplit sans problème et ma commande est bien prise en compte dans ma liste de commandes, c'est à partir de "DoCmd.SetWarnings False" que ça ne va pas, j'ai ce message "Erreur de syntaxe dans l'instruction INSERT INTO" alors que je cherche a récupérer les champs qui se trouvent dans DETAIL DEVIS pour les mettre dans DETAIL CDE.

    Pourriez-vous m'expliquer ce qui ne va pas dans mon code ?

    Avec mes remerciements

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,

    En regardant très vite :
    Votre instruction INSERT n'a pas le même nombre de champs de départ et d'arrivée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO [RQ-DETAIL CDE](dESIGNATION, Reference, Prix Net HT, Quantite)
    : 4 champs d'arrivée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT " & Forms![FORM-DEVIS].IDDevis & ", Produit, Reference, PrixAchatHT, Quantite FROM [T-DetailDevis]
    : 5 champs de départ

    Bonne continuation

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Par défaut
    Bonjour,

    Je vous remercie pour votre réponse, je n'ai jamais fait d'INSERT INTO mais j'ai compris le problème.

    J'ai donc modifié le code pour que "Produit" corresponde à "dESIGNATION" (et le reste):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monsql = "INSERT INTO [RQ-DETAIL CDE](dESIGNATION, Reference, Prix Net HT, Quantite) SELECT " & Forms![S/F-DETAIL DEVIS].Produit & ", Reference, PrixAchatHT, Quantite FROM [T-DetailDevis] WHERE IDCommande=" & Forms![FORM-COMMANDE]!IDCommande
    mais là j'ai le message suivant : "impossible de trouver le formulaire 'S/F-DETAIL DEVIS' auquel il fait référence dans une expression de macro ou un code Visula Basic", ce qui est logique, donc comment dois-je déclarer ce sous-formulaire pour qu'il puisse être pris en compte ?

    Cordialement

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,

    Pour faire référence à un sous-formulaire ou à ses contrôles et propriétés dans du code VBA, il faut utiliser le syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!NomformPrincipal!NomSousformulaire.Form.NomduControle
    Vous avez ici un tutoriel complet sur les différentes possibilités.

    La meilleure façon pour vérifier le syntaxe de l'insert est de coller le code d'abord dans le QBE (mode création des requêtes) en mode SQL (en enlevant toutes les particularités du code VBA). Vous ouvrez les 2 formulaires en jeu et attribuez les critères de filtre avec le générateur d'expression. Vous exécutez après la requête pour tester

    Bonne continuation

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Par défaut
    Bonjour,

    Bon j'ai fait beaucoup d'essais et de recherches suite aux infos communiquées. Je ne trouve toujours pas la solution.

    Si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monsql = "INSERT INTO [RQ-DETAIL CDE]dESIGNATION SELECT " & Forms![FORM-DEVIS]![S/F-DETAIL DEVIS].Form.Produit
    DoCmd.RunSQL monsql
    j'ai "erreur de syntaxe dans l'instruction INSERT INTO"

    Si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monsql = "INSERT INTO [RQ-DETAIL CDE](dESIGNATION) SELECT " & Forms![FORM-DEVIS]![S/F-DETAIL DEVIS](Produit)
    DoCmd.RunSQL monsql
    j'ai "Vous allez ajouter 1 ligne(s). Dès que vous aurez cliqué sur OUI, il ne vous sera pas possible d'utiliser la commande Annuler pour supprimer la modification. Etes vous sûr de vouloir ajouter les lignes sélectionnées ?"
    Si je clique "Non" ma commande est créée, si je clique "OUI" ma commande est créée et j'ai une ligne dans ma table "Détail Commande" qui s'est créée et j'aéi le chiffre "5" dans le champs "dESIGNATION". Je ne vois pas d'où vient ce chiffre (?)

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir,

    Hum,.. à priori, la valeur 5 correspondrait à la valeur contenue dans Forms![FORM-DEVIS]![S/F-DETAIL DEVIS](Produit) au moment de l'exécution de la requête.

    Ce qui m'étonne, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Si je clique "Non" ma commande est créée
    Normalement la requête ne devrait pas s'exécuter.

    Vu les imbrications des objets en jeu, est-ce que vous pouvez poster votre application (ou la partie qui nous intéresse) sans les données sensibles.

    Cordialement,

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

Discussions similaires

  1. [Débutant] Erreur de syntaxe dans l'instruction INSERT INTO
    Par IL-MAFIOSO dans le forum VB.NET
    Réponses: 15
    Dernier message: 21/03/2013, 15h54
  2. [AC-2007] Erreur de syntaxe dans l'instruction INSERT INTO
    Par DébutantAccess dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/02/2013, 19h45
  3. OleDbException -{"Erreur de syntaxe dans l'instruction INSERT INTO."}
    Par daniel.moreda dans le forum Framework .NET
    Réponses: 1
    Dernier message: 27/09/2011, 17h38
  4. Erreur de syntaxe dans l'instruction INSERT INTO
    Par doolar dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/05/2008, 16h37
  5. Erreur de syntaxe dans l'instruction INSERT INTO
    Par logiciel_const dans le forum Bases de données
    Réponses: 8
    Dernier message: 19/03/2008, 11h57

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