slt à tous
je veux copier l'enregistrement séléctionné d'un dbgrid dans une table;
sachant que j'utilise l'SGBD access et les composants ADOquery,ADOconnection et Datasource.
merci
slt à tous
je veux copier l'enregistrement séléctionné d'un dbgrid dans une table;
sachant que j'utilise l'SGBD access et les composants ADOquery,ADOconnection et Datasource.
merci
Le DBGrid est associé à un DataSource lui même associé à un DataSet, c'est l'enregistrement courant de ce dernier qu'il suffit de dupliquer soit dans un DataSet d'une autre table (via un for fieldCount, Value, ...), soit générer une requête SQL
Consulte les tutoriels DB
j'ai essayé de générer une requête SQL mais ça marche pas. voilà le code
sachant que "archive"est la table vers laquelle je veux copier l'enregistrement séléctionné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add('insert into archive') adoquery1.Open;
tu devrais essayer comme ça:
INSERT INTO archive (f1, f2, f3)
SELECT f1, f2, f3 FROM source
mais cette requete permet de copier tous les enregistrements dans la table cible. et moi je veux copier l'enregistrement séléctionné dans la dbgrid.
je crois que tu m'as pas bien compris c'est pas le champs séléctionné mais l'enregistrement (càd la ligne séléctionnée du dbgrid).
j'ai essayé aussi le code suivant mais ça marche pas aussi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ch:=ADOQuery1.FieldByName('Nom').Value; //ch est la valeur du champ "Nom" de l'enregistrement séléctionné ADOquery1.Close; ADOquery1.SQL.Clear; ADOquery1.SQL.Add('insert into archive select * from etudiant where Nom=ch'); ADOquery1.ExecSQL;
si comme je le pense ch est un string alors je rajouterai
en espérant que nom est unique (clé primaire) ni de champs calculés
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ADOquery1.SQL.Add('insert into archive select * from etudiant where Nom='+Quotedstr(ch));
merci ça marche bien mais j'ai rencontré le même problème en changeant le champ:
biensur dans ce cas on ne peut pas utiliser la fonction Quotedstr.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 x:=strtoint(ADOQuery1.FieldByName('Num_dossier').Value); //x est la valeur du champ "Num_dossier" de l'enregistrement séléctionné //Num_dossier est le clé primaire de type entier ADOquery1.Close; ADOquery1.SQL.Clear; ADOquery1.SQL.Add('insert into archive select * from etudiante where Num_dossier=x'); ADOquery1.ExecSQL;
Que peut on faire dans ce cas?
Salut,
La requête que tu donnes recherche comme numéro x ... Ta requête devrait plutôt être ainsi :
Il faut concaténer x à ta requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part ADOquery1.SQL.Add('insert into archive select * from etudiante where Num_dossier='+x);
A+
oui ça marche mais en modifiant x comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part x:=ADOQuery1.FieldByName('Num_dossier').Value;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager