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

Bases de données Delphi Discussion :

Erreur sur ma requête d'insertion


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut Erreur sur ma requête d'insertion
    Bonjour à tous,

    Pour procéder à un archivage, j'ai opté pour une requete d'insertion:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TabArchAbs ( NUM, MATRICULE, PUCE, NOM, PRENOM, FONCTION, DEPT,  DATE ) IN 'C:\Logiciel Contrôle\Base\TabArchAbs.dbf' 
    SELECT TabTempAbs.NUM, TabTempAbs.MATRICULE, TabTempAbs.PUCE, TabTempAbs.NOM, TabTempAbs.PRENOM, TabTempAbs.FONCTION, TabTempAbs.DEPT, TabTempAbs.DATE  FROM TabTempAbs IN 'C:\Logiciel Contrôle\Base\TabTempAbs.dbf'
    Mais je ne comprend pas l'erreur affichée: erreur BDE10770
    Utilisation incorrecte du mot-clé
    Elément: DATE
    Numéro de ligne: 1

    Le problème est que le champs Date est un champs de ma table, alors je ne vois pas le pbm!!!!!

    Merci

  2. #2
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Pour ton champ, tu le mets entre guillemets "DATE" (mais il vaut mieux éviter ce genre de nom de champ).
    Il y a aussi le "In 'C:\...." dont je ne vois pas trop ce qu'il vient faire là. je mettrais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO "C:\.....\...dbf"
    et la même chose pour le FROM
    Roland

  3. #3
    Membre régulier
    Profil pro
    Président
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Président

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 102
    Points
    102
    Par défaut
    svp, éviter se type de champs "C:\.....\...dbf". voir y a t il un problème de type entre le deux table?

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Ton problème est récurrent, Date est un mot réservé du SQL, et en général il faut éviter de les utiliser.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre régulier
    Profil pro
    Président
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Président

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 102
    Points
    102
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Ton problème est récurrent, Date est un mot réservé du SQL, et en général il faut éviter de les utiliser.
    Oui, vous avez raison. Mais la table a était crées avec le champ date, donc c'est une erreur.

  6. #6
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Oui, c bon, j'ai changé le nom du Champs Date, j'ai compris que c t un mot réservé SQl, j'ai aussi supprimé le : IN, en fait, j'ai copié la requête directement à partir d'un exemple sur le net, avec mes modifs bien sur!!!

    Je me suis débarrassée des erreurs qui s'affichaient au départ, mais maintenant , il m'affiche une erreur: NUM , nom de champs incorrect
    alors que c bien le nom du champs dans ma table ??????

    Merci

  7. #7
    Membre régulier
    Profil pro
    Président
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Président

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 102
    Points
    102
    Par défaut
    Citation Envoyé par souminet Voir le message
    Oui, c bon, j'ai changé le nom du Champs Date, j'ai compris que c t un mot réservé SQl, j'ai aussi supprimé le : IN, en fait, j'ai copié la requête directement à partir d'un exemple sur le net, avec mes modifs bien sur!!!

    Je me suis débarrassée des erreurs qui s'affichaient au départ, mais maintenant , il m'affiche une erreur: NUM , nom de champs incorrect
    alors que c bien le nom du champs dans ma table ??????

    Merci
    svp, récrire votre nouvelle requête.

  8. #8
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Envoyé par sakli

    svp, récrire votre nouvelle requête.
    voilà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO 'C:\Logiciel Contrôle\Base\ArchAbs.dbf'  ( NUM, MATRICULE, PUCE, NOM, PRENOM, FONCTION, DEPT,  DATES ) 
    SELECT TabTempAbs.NUM, TabTempAbs.MATRICULE, TabTempAbs.PUCE, TabTempAbs.NOM, TabTempAbs.PRENOM, TabTempAbs.FONCTION, TabTempAbs.DEPT, TabTempAbs.DATES  FROM 'C:\Logiciel Contrôle\Base\TempAbs.dbf'

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par souminet Voir le message
    Envoyé par sakli



    voilà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO 'C:\Logiciel Contrôle\Base\ArchAbs.dbf'  ( NUM, MATRICULE, PUCE, NOM, PRENOM, FONCTION, DEPT,  DATES ) 
    SELECT TabTempAbs.NUM, TabTempAbs.MATRICULE, TabTempAbs.PUCE, TabTempAbs.NOM, TabTempAbs.PRENOM, TabTempAbs.FONCTION, TabTempAbs.DEPT, TabTempAbs.DATES  FROM 'C:\Logiciel Contrôle\Base\TempAbs.dbf'
    Déjà tu ne dois pas utiliser de composants TDatabase et les Alias, car sinon tu n'utiliserais pas les noms de table avec le chemin.
    Je te conseil de rechercher des tutoriels sur cela (il y en a quelques uns sur le site ^^)

    Sinon, au lieu des ' (aprostrophes) pour encadrer tes chemins, utilises les " (Guillemets).
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  10. #10
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Et comment SQL est censé deviner que TabTempAbs est un alias qui désigne ta table TempAbs.dbf ? Soit tu le définis, tu le supprimes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO "C:\Logiciel Contrôle\Base\ArchAbs.dbf" 
     ( NUM, MATRICULE, PUCE, NOM, PRENOM, FONCTION, DEPT,  DATES ) 
    SELECT TabTempAbs.NUM, TabTempAbs.MATRICULE, TabTempAbs.PUCE, 
    TabTempAbs.NOM, TabTempAbs.PRENOM, TabTempAbs.FONCTION, 
    TabTempAbs.DEPT, TabTempAbs.DATES  
    FROM "C:\Logiciel Contrôle\Base\TempAbs.dbf" TabTempAbs
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO "C:\Logiciel Contrôle\Base\ArchAbs.dbf" 
     ( NUM, MATRICULE, PUCE, NOM, PRENOM, FONCTION, DEPT,  DATES ) 
    SELECT NUM, MATRICULE, PUCE, NOM, PRENOM, FONCTION, DEPT, DATES  
    FROM "C:\Logiciel Contrôle\Base\TempAbs.dbf"
    Roland

  11. #11
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    à mes yeux, l'erreur est d'utiliser SQL pour insérer des donnes dans un DBF TTable est là pour ça
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  12. #12
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Bonjour;

    Avec tous les changements proposés par vous tous, l'erreur est toujours affichée!!!!

    Erreur BDE 10038
    Nom de champs incorrect
    NUM


    En fait, si il y'a un autre moyen de procéder à mon archivage, c à d de copier tous les enregistrements d'une table à une autre ayant éxactement la même structure, j'aimerais que l'on m'en fasse etat SVP, mais il faudrait que la procédure soit optimisée.
    j'ai opté pour une requête SQL sous les conseils des forumeurs!!! mais je vois que ça bloque et je ne sais pas pourquoi????!!!!!

    merci de votre aide!!!

  13. #13
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    à mes yeux, l'erreur est d'utiliser SQL pour insérer des donnes dans un DBF TTable est là pour ça
    L'erreur est surtout d'utiliser le BDE et Paradox qui sont deux systèmes obsolètes

    Citation Envoyé par souminet Voir le message
    Bonjour;

    Avec tous les changements proposés par vous tous, l'erreur est toujours affichée!!!!

    Erreur BDE 10038
    Nom de champs incorrect
    NUM


    En fait, si il y'a un autre moyen de procéder à mon archivage, c à d de copier tous les enregistrements d'une table à une autre ayant éxactement la même structure, j'aimerais que l'on m'en fasse etat SVP, mais il faudrait que la procédure soit optimisée.
    j'ai opté pour une requête SQL sous les conseils des forumeurs!!! mais je vois que ça bloque et je ne sais pas pourquoi????!!!!!

    merci de votre aide!!!
    Fait nous voir ton code qui permet l'implémentation de la requete.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  14. #14
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Rayek Voir le message
    L'erreur est surtout d'utiliser le BDE et Paradox qui sont deux systèmes obsolètes
    on a parfois des contraintes qui font que

    En fait, si il y'a un autre moyen de procéder à mon archivage, c à d de copier tous les enregistrements d'une table à une autre ayant éxactement la même structure, j'aimerais que l'on m'en fasse etat SVP, mais il faudrait que la procédure soit optimisée.
    pour un DBF il me semble que le plus simple est de dupliquer le fichier une fois fermé

    sinon TBatchMove est là pour ça non ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  15. #15
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Bonjour à tous,

    Le résultat souhaité est l'ajout des enregistrements à la table d'archivage par copie, en fait la procédure d'archivage peut se faire plusieurs fois, exemple:
    Je click sur le bouton archiver pour copier tous les enregistrements de la Table1 vers la Table2...

    Je réinitialise la Table1, un autre traitement aura pour but de la remplir avec d'autres enregistrements, là, on doit archiver à nouveau mais sans écraser le contenu de la Table2, on copie les enregistrements de Table1 vers Table2 à partir de la fin de la table c à d l'insertion se fais à partie du 1er enregistrement vide à la fin...
    Est ce que la TBatchMove me permet d'inserer les enregistrements copiés sans écraser le contnu déja existant de la table 2 (Table d'archivage)????

    Merci

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/01/2020, 10h34
  2. Erreur de syntaxe sur une requête d'insertion
    Par Moustic74 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/12/2008, 18h34
  3. [VBA] Erreur sur une requête avec un opérateur
    Par elgringo2007 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/07/2006, 18h12
  4. Erreur sur ma requête à son ouverture
    Par ghan77 dans le forum Bases de données
    Réponses: 7
    Dernier message: 23/01/2006, 17h46
  5. Réponses: 8
    Dernier message: 01/03/2005, 17h01

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