Probleme de syntaxe d'insertion

[Résolu]
Signaler
Messages postés
26
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
20 mai 2011
-
Messages postés
26
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
20 mai 2011
-
Bonjour,
J'ai un probleme d'insertion dans une table.Je m'explique :
j'ai deux table a savoir chambre et reservation. Je veux inserer quelques donnees de la table chambre dans la table reservation.Pour cela j'ai voulu passer passer par une requete mais qui ne marche pas.
Voici la procedure :

procedure Tchamb_dispo.BitBtn5Click(Sender: TObject);
Var idchambre:integer;
ddd,ddf : TDateTime;
begin
idchambre:=Grille.DataSource.DataSet.FieldbyName('IDCHAMBRE_SERVI').AsInteger ;
ddd := Grille.DataSource.DataSet.FieldbyName('DATED').AsDateTime;
ddf := Grille.DataSource.DataSet.FieldbyName('DATEF').AsDateTime
with DMReserv.IBQReserv do
begin
SQL.Clear;
SQL.Add('insert into RESERVATION (DATEDR, DATEFR, IDRESERVATION) values (SELECT :DD, :DF,:IDC FROM CHAMBRE)');
ParamByName('DD').AsDate := ddd;
ParamByName('DF').AsDate := ddf;
ParamByName('IDC').AsInteger :=idchambre;
ExecSQL;
end;

end;

je demande de l'aide pour mener a bien mon travail
Cordialement!

6 réponses

Messages postés
26
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
20 mai 2011

voila que sa marche.
Merci bien.
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Bonjour,

mais qui ne marche pas.

Il faut être plus précis..(messages d'erreurs, mettre des points d'arrêt, tester les valeurs etc..etc..)

Ce n'est pas facile de débugger ce genre de situation car on ne voit pas les liens que tu as pu mettre ou omettre entre les deux tables ni leurs structures..

De plus, tu fais une insertion dans la table "Maître" sans définir la clé...

Au vu du peu d'information stockées, tu pourrais peut-être commencer par
créer un formulaire et stocker les infos sur un clic de bouton :

Query1.Edit;
Query1Champ1.text := Valeur1;
Query1Champ2.text := Valeur2;
etc..
Query1.Post;

cantador
Messages postés
20
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
22 mars 2012
1
SQL.Clear;
SQL.Add('insert into RESERVATION (DATEDR, DATEFR, IDRESERVATION) values (SELECT :DD, :DF,:IDC FROM CHAMBRE)');
ParamByName('DD').AsDate := ddd;
ParamByName('DF').AsDate := ddf;
ParamByName('IDC').AsInteger :=idchambre;
ExecSQL;

Re
je pence que ta requete et plein des faute de syntaxe
Essai ce code
ibquery1.close;
ibquery1.sql.clear;
ibquery1.sql.add(insert into reservation(datedr,datefr,idreservation) values(:dd,:df,:idc) from chambre');
ibquery1.parambyname('dd').asstring:=edit1.text;
ibquery1.parambyname('df').asstring:=edit2.text;
ibquery1.parambyname('idc').asstring:=edit3.text;
ibquery1.execsql;

sachant que edit1,edit2,edit3 ce sont des champs qui va contenir vos donnée a inserer
et en plus les edit sont de type string c pour ca tu met asstring au lieu le asdate ou asinteger

a++
Messages postés
26
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
20 mai 2011

Bonjour,
ok je vais voir tous sa
merci bien pour vos differentes reponses.
cordialement!
Messages postés
20
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
22 mars 2012
1
re
mais si vous voulez copie le contenue d'une table vere une autre table
voila la syntaxe
sql.add('INSERT INTO table_cible
SELECT * FROM table_source');
pour votre cas vous faite
sql.add('insert into reservation select * from chambre');

sachant que les champs de la table reservation= a les champs table chambre.
a+++
Messages postés
26
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
20 mai 2011

ok serait mieux de mieux dutiliser la copie.
merci