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 :

Requête SQL incompléte pour insérer enregistrement dans table [AC-2016]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Points : 100
    Points
    100
    Par défaut Requête SQL incompléte pour insérer enregistrement dans table
    Bonjour,

    J'essaie d'importer un fichier texte dans une table avec une requête SQL.

    Message d'erreur:

    "Erreur de syntaxe dans la requête. La clause de la requête est incomplète"

    Je vous joins mon fichier txt et ma base pour test . J'ai lu les observations de Tofalu concernant les PJ mais je ne sais pas expliquer ce qui ne fonctionne pas c'est pourquoi je me permets de joindre dès le départ mes fichiers.

    Merci pour votre aide

    Eric
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Points : 100
    Points
    100
    Par défaut
    Bonsoir,

    1 erreur trouvée me semble t il le nom de la table ne doit pas être entouré de guillemet

    La procédure fonctionne en pas à pas lorsqu'il n'y a qu'un seul "INSERT" dans la variable tableau lines(). Par contre quand il y en a plusieurs le message d'erreur est le suivant:

    "Caractères trouvé après la fin de l'instruction sql"

    Eric

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonsoir,

    voici mes remarques concernant ton code:
    - quand on a un numéro auto dans une table, il faut spécifier tous les champs à remplir,
    - le nombre de champs à remplir ne correspond pas au nombre de valeurs à insérer (d'où le champ0 que j'ai ajouté au début de l'instruction et dans la table, à toi de regarder lequel il manque, le numéroauto s'incrémente automatiquement et ne doit pas faire partie des champs à valoriser,
    - date est un mot réservé, il faut mettre les crochets pour éviter une erreur d'exécution,
    - il ne faut pas, en effet, de guillemets autour du nom de la table,
    - il faut utiliser les guillemets et pas l'apostrophe pour délimiter les valeurs (d'ailleurs, la 3ème ligne contenant une apostrophe dans un champ a provoqué une erreur d'exécution).

    Instructions à modifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                lines(X) = "INSERT INTO ""P213"" VALUES ('" & Join(a(), "','") & "')"

    à remplacer par
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                lines(X) = "INSERT INTO P213 (champ0,compte,[date],Spec,Nature_1,Nature_2,Nature_3,PNC,Montant) VALUES (""" & Join(a(), """,""") & """)"
    - il faut exécuter les requête une par une en parcourant le tableau lines() pour les lancer.

    Instructions à modifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim SQL As String
     
    SQL = SQL + Join(lines(), ";")
     
    DoCmd.RunSQL SQL
    à remplacer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 0 To UBound(lines())
        CurrentDb.Execute lines(i), dbFailOnError
    Next
    Remarques: CurrentDb.Execute évite le message d'avertissement et l'option dbFailOnerror annules les mises à jour si une erreur se produit
    Dans Access, le caractère de fin d'instruction ";" n'est pas obligatoire (sauf si on utilise conjointement l'instruction Parameters)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  4. #4
    Membre régulier
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Points : 100
    Points
    100
    Par défaut
    Merci pour tes suggestions. Je modifie mon code, teste et te tiens au courant

    Cordialement
    Eric

  5. #5
    Membre régulier
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Points : 100
    Points
    100
    Par défaut


    Merci tee_grandbois tout fonctionne.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/11/2011, 15h13
  2. Réponses: 1
    Dernier message: 02/10/2010, 09h00
  3. [requête sql]comment comparer des enregistrements de deux tables
    Par DSabah dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/06/2007, 15h12
  4. [Requête/SQL]ajouter un champ calculé dans une table
    Par zougna dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 17/04/2007, 19h09
  5. [SQL] Pb d'insertion donnée dans table, pb requête SQL
    Par PuppeT mAsTer dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 03/07/2006, 11h26

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