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 :

Copier les enregistrements d'une table dans une autre


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Points : 47
    Points
    47
    Par défaut Copier les enregistrements d'une table dans une autre
    slt à tous
    je veux copier le contenu d'une table etudiante dans une table archive (qui a les mêmes champs que la première).
    j'ai utiliser le code suivant mais ça marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     ADOquery1.Close;
     ADOquery1.SQL.Clear;
     ADOquery1.SQL.Add('insert into archive (Num_dossier, CIN, Nom, Prénom, Date_naissance, Prénom père, Prénom mère, Num_dossier_médical, Num_inscription_universitaire, Tél, Adresse, Logement, Paiement, Num_chambre) select * from etudiante');
     
    ADOquery1.OPen;
    merci pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Quel est le soucis ?
    A première vu, je dirai que tu t'ai juste trompé au niveau de la dernière ligne de code.
    Remplace
    par
    A+

  3. #3
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 173
    Points
    4 173
    Par défaut
    Même remarque que ero-sennin pour ExecSQL.

    Par contre tu utilises quoi comme SGBD ?
    Parce que les caractères accentués directement dans les noms de champs, en général ça passe mal... Il faut délimiter l'identificateur du nom de champ avec '[' et ']' (pour SQL Server) ou avec '"'.

  4. #4
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Points : 47
    Points
    47
    Par défaut
    merci
    j'ai remplacé cette ligne mais ça marche pas aussi.
    je crois que l'erreur est au niveau de la requète
    voilà l'erreur retournée:
    Images attachées Images attachées  

  5. #5
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 173
    Points
    4 173
    Par défaut
    Comme je l'ai dit dans le post précédent, les caractères accentués ne passeront pas. D'autant plus que je viens de voir que tu as également des espaces dans les noms des champs.

    Ca il n'y a aucune chance que sa passe, quel que soit le SGBD. Ajoute les délimiteurs autour des noms des champs.

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Pour avoir un peu plus d'info, comme le demande Franck SORIANO, quel SGBD utilises-tu ?

    Sinon, la requête fonctionnelle doit être la suivante :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into archive (Num_dossier, CIN, Nom, `Prénom`, Date_naissance, `Prénom père`, `Prénom mère`, Num_dossier_médical, Num_inscription_universitaire, `Tél`, Adresse, Logement, Paiement, Num_chambre) select * from etudiante

  7. #7
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Points : 47
    Points
    47
    Par défaut
    j'utilise access.
    j'ai modifier le code comme suit mais ça marche pas encore c'est la même erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ADOquery1.SQL.Add('insert into archive (Num_dossier, CIN, Nom,'+ ' Prénom, '+'Date_naissance,'+' Prénom père,'+' Prénom mère,'+' Num_dossier_médical, Num_inscription_universitaire,'+' Tél'+', Adresse, Logement, Paiement, Num_chambre) select * from etudiante');

  8. #8
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 173
    Points
    4 173
    Par défaut
    Là tu te contentes de concaténer des chaînes, tu n'ajoutes pas les délimiteurs.

    Avec Access, je crois que c'est le même délimiteur que pour SQL Server. Donc [ ].

    Ce qui doit donner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ADOquery1.SQL.Text := 'insert into archive ([Num_dossier], [CIN], [Nom], [Prénom], [Date_naissance], [Prénom père], [Prénom mère], [Num_dossier_médical], [Num_inscription_universitaire], [Tél], [Adresse], [Logement], [Paiement], [Num_chambre]) select * from etudiante';

  9. #9
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Ce ne sont pas des quotes qu'il faut mettre mais des "`" pour l'encadrement... de plus, tu ne fais que concaténer ce qui est strictement inutile !

    Donc ça donnerait ceci logiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADOquery1.SQL.Add('INSERT INTO archive (Num_dossier, CIN, Nom, `Prénom`, Date_naissance, `Prénom père`, `Prénom mère`, Num_dossier_médical, Num_inscription_universitaire, `Tél`, Adresse, Logement, Paiement, Num_chambre) SELECT * FROM etudiante');
    Logiquement, avec ça tout est OK! Cependant, si je peux te conseiller une chose, c'est d'éviter les caractères accentués ainsi que les espaces pour les noms de colonnes, ça t'évitera de belles surprises et des prises de tête

    A+

    EDIT :
    Ou encore voir la méthode que nous propose Franck Soriano

  10. #10
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Points : 47
    Points
    47
    Par défaut
    Merci ca va ça marche bien avec les quotes.
    mais juste j'ai un petit souci, si je repète la même action càd l'action de copier le contenue de la 1ère base dans la 2ème, ça donne un erreur.
    biensur parce que la table archive contient déja ces enregistrement.

  11. #11
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Je ne comprends pas quel est ton soucis vu que tu donnes la réponse toi même :

    biensur parce que la table archive contient déja ces enregistrement.
    Peux-tu être plus explicite ?

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. Réponses: 3
    Dernier message: 13/01/2009, 16h55
  5. Copier les valeurs d'un formulaire dans une table
    Par Cyphen dans le forum Access
    Réponses: 4
    Dernier message: 19/06/2006, 10h45

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