Probleme de syntaxe d'insertion

Résolu
mahz Messages postés 26 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 20 mai 2011 - 25 févr. 2011 à 10:42
mahz Messages postés 26 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 20 mai 2011 - 2 mars 2011 à 13:19
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

mahz Messages postés 26 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 20 mai 2011
2 mars 2011 à 13:19
voila que sa marche.
Merci bien.
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 mars 2011 à 10:34
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
0
cs_kroma23 Messages postés 20 Date d'inscription dimanche 16 juillet 2006 Statut Membre Dernière intervention 22 mars 2012 1
2 mars 2011 à 11:33
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++
0
mahz Messages postés 26 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 20 mai 2011
2 mars 2011 à 11:40
Bonjour,
ok je vais voir tous sa
merci bien pour vos differentes reponses.
cordialement!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_kroma23 Messages postés 20 Date d'inscription dimanche 16 juillet 2006 Statut Membre Dernière intervention 22 mars 2012 1
2 mars 2011 à 11:48
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+++
0
mahz Messages postés 26 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 20 mai 2011
2 mars 2011 à 12:00
ok serait mieux de mieux dutiliser la copie.
merci
0
Rejoignez-nous