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

Requêtes et SQL. Discussion :

Erreur de syntaxe lors d'un INSERT INTO


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut Erreur de syntaxe lors d'un INSERT INTO
    Bonjour!
    J'ai ce code [J'ai remis à jour le code]:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    db.Execute "Insert Into Transactions Values ('',  " & dttr & ", " & note & ", " & categ & ", " & scateg & ", " & paie & ", " & mnt & ");"

    Ce qu'il fait, est qu'il ajoute, dans la table Transactions, les informations suivantes:
    • Champ vide pour NuméroAuto
    • Date (dttr)
    • Détails (note)
    • Catégorie (categ)
    • Sous-Catégorie (scateg)
    • Méthode de Paiement (paie)
    • Montant total payé (mnt)


    Mais lorsque j'exécute la chaîne, j'ai ce message : Erreur de Sytaxe (Opérateur Absent) dans l'expression 'Contenu de la variable Note'.
    Est-ce qu'un oeil de lynx pourrait m'aider ? Merci!
    Amerex
    «La chance sourit aux audacieux»
    Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

    N'oubliez pas de noter les messages!

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Bonsoir,

    Je pense que lorsque l'on n'énumère pas les champs, on doit impérativement les mettre tous. C'est d'ailleurs ce que tu fais en passant un champ vide pour le numéro automatique, mais ce champ ne peut pas être vide.

    Je pense (je n'ai d'ailleurs jamais fait autrement) qu'il faut énumérer tes champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.execute "Insert Into Transactions (champDate, ChampNote, ...) Values (" & dttr & ", " & note & ", " & categ & ", " & scateg & ", " & paie & ", " & mnt & ");"
    Dans ce contexte, tu peux alors ne pas citer ton champ de clé primaire et ne pas passer de valeur pour ce champ
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut
    Bonjour Pierre,
    merci de ton aide; mais j'ai déjà essayé la chaîne en spécifiant le nom des champs, en mettant/enlevant des guillemets... le beau mal de tête

    J'ai maintenant: "Opérateur Absent pour [telle variable]"...
    Amerex
    «La chance sourit aux audacieux»
    Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

    N'oubliez pas de noter les messages!

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Es-tu certain de la nature de tes champs?

    Les valeurs des champs de type texte doivent être encadrés par des apostrophes

    Prends l'habitude de redonner le code que tu utilises, sinon, je dois sortir ma boule de cristal, mais je l'ai prêtée ce soir...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut
    Désolé pour le code, j'y ai vraiment pas pensé. Alors voilà, je l'ai réécrit et j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.Execute "INSERT INTO Transactions (Date, Details, Categorie, SCategorie, Paiement, Montant) VALUES('" & dttr & "', '" & note & "', '" & categ & "', '" & scateg & "', '" & paie & "', '" & mntn & "');"
    avec un message d'erreur disant: "Erreur de syntaxe dans l'instruction INSERT INTO". Mais l'erreur reste introuvable...!
    Amerex
    «La chance sourit aux audacieux»
    Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

    N'oubliez pas de noter les messages!

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Es-tu certain que date, Details, ... sont des champs texte dans la table des transactions? Tu ne peux encadrer que tes champs de type texte, tous les autres doivent être passés sans l'apostrophe.

    De plus, il faut t'assurer que la valeur que tu passes pour la date est interprétable par SQL comme un champ date. Le mieux est de passer cette valeur en tant que entier simple ou long...

    De plus, un champ appelé Date, c'est pas le top du top en informatique, car Date est souvent un mot réservé, qui peut poser problème(sss)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut
    Voici ma table "Transactions"
    Citation Envoyé par Amérex, provenant du fichier MDB
    No, NuméroAuto
    Date, Texte
    Details, Mémo
    Categorie, Texte
    SCategorie, Texte
    Paiement, Texte
    Montant, Numérique (Format Monétaire)
    J'ai vérifié les champs textes, j'ai vérifié à encadrer que les champs textes... c'est insensé!! c'est pourtant pas la permière chaine que j'écris!! Je pense que je vais aller prendre une bonne pause et tout réécrire plus tard... Merci beaucoup de ton aide!
    Amerex
    «La chance sourit aux audacieux»
    Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

    N'oubliez pas de noter les messages!

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Le montant mntn ne doit pas être entre apostrophes
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut
    Est-ce que ça se pourrait que la déclaration des variables puisse venir mettre les valeurs en erreur? Parce que les variables, j'ai beaucoup de difficulté avec ça. Ici, je les ai toutes déclarées en Variant et Montant, en Currency. Là, j'ai modifié Currency par Variant, et la variable reste vide lorsque l'exécuteur passe dessus...
    Amerex
    «La chance sourit aux audacieux»
    Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

    N'oubliez pas de noter les messages!

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Il faut vérifier ce que tu passes comme valeurs.

    Une bonne technique est d'utiliser une variable pour créer ta requête. Ainsi, tu peux déboguer beaucoup plus facilement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim SQL as string
    sql = "insert into ..."
    debug.print sql
    db.execute sql
    Tu peux alors voir exactement ce que tu passes comme requête au moteur sql

    Mais le Currency ne pose pas problème... et ne doit pas être encadré
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut
    J'ai encore réessayé, cette fois-ci, avec un modèle provenant d'une application qui fonctionne à 100%.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "INSERT INTO Transactions (No, Dt, Details, Categorie, SCategorie, Paiement, Montant) VALUES ('', " & dttr & ", '" & note & "', '" & categ & "', '" & scateg & "','" & paie & "', " & mntn & ");"
    Le Debug.Print SQL ne m'affiche pas ce que SQL tente de résoudre, puisque le message d'erreur d'exécution m'apparaît. Ce que je ne comprend pas, parce que le débuggeur surligne la ligne qui suit Debug.Print (il surligne db.execute).

    Bref, tout ça pour dire que le problème apocalyptique ne fonctionne toujours pas... pourtant, je cherche!
    Amerex
    «La chance sourit aux audacieux»
    Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

    N'oubliez pas de noter les messages!

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Mets un point d'arrêt sur la ligne db.execute et regarde dans la fenêtre d'exécution, tu devrais voir le résultat de la chaine SQL et tu pourras l'analyser



    Citation Envoyé par amerex Voir le message
    J...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "INSERT INTO Transactions (No, Dt, Details, Categorie, SCategorie, Paiement, Montant) VALUES ('', " & dttr & ", '" & note & "', '" & categ & "', '" & scateg & "','" & paie & "', " & mntn & ");"
    ...
    Tu mets toujours le champ NO et sa valeur (chaine vide). Or, tu ne dois pas renseigner ni ce champ ni sa valeur. Comme c'est un champ automatique, Access ajoutera lui-même sa valeur.

    Par contre, si le champ dt est du texte, ta chaine dttr doit être encadrée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "INSERT INTO Transactions (Dt, Details, Categorie, SCategorie, Paiement, Montant) VALUES ('" & dttr & "', '" & note & "', '" & categ & "', '" & scateg & "','" & paie & "', " & mntn & ");"
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut
    Pierre, je te proclame DIEU du SQL.

    Mon erreur, s'est avéré que les variables ne suivaient pas et la chaîne essayait d'insérer du NULL. C'est avec l'affichage "Exécution" avec lequel j'ai pu trouver ça, merci mille fois Pierre, je te dois une fière chandelle!

    Mon code final est:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "INSERT INTO Transactions (Dt, Details, Categorie, SCategorie, Paiement, Montant) VALUES ('" & dttr & "', '" & note & "', '" & categ & "', '" & scateg & "','" & paie & "', '" & mntn & "');"
    Amerex
    «La chance sourit aux audacieux»
    Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

    N'oubliez pas de noter les messages!

  14. #14
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Ok. Tant mieux si tout fonctionne.

    Normalement, il n'est pas obligatoire d'encadrer la variable mntn, car c'est une variable numérique. Avec une base de données Access, cela ne pose pas de problèmes. Je serais moins sûr avec du sql server...

    Pour le "dieu" du SQL, va sur http://sqlpro.developpez.com, mais en l'occurrence, ici, c'était plus du VBA que du SQL...

    Bonne continuation
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut
    Merci!!
    Amerex
    «La chance sourit aux audacieux»
    Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

    N'oubliez pas de noter les messages!

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

Discussions similaires

  1. 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, 16h38
  2. Erreur de syntaxe ds l'instruction INSERT INTO
    Par 810mcu dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 17/06/2008, 17h22
  3. 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, 15h37
  4. 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, 10h57
  5. erreur de syntaxe dans l'instructiuon insert into
    Par greg64 dans le forum Access
    Réponses: 6
    Dernier message: 13/04/2006, 14h07

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