Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Insert usando componentes Interbase (https://www.clubdelphi.com/foros/showthread.php?t=64296)

valeria 25-03-2009 19:17:54

Insert usando componentes Interbase
 
Hola a todos estoy comensando a usar Firebird y para ello estoy usando los componentes Interbase utiso un Ibdatabase,IbTransaction y un ibdataset ahora bien realiso primero un select utilisando la primer sentencia:

self.IBDataSet1.Close;
sSQL:= 'select * from PRODUCCION where ID=(select max(ID) from PRODUCCION)';
self.IBDataSet1.SelectSQL.Text:= sSQL;
self.IBDataSet1.Open;
AUX:= self.IBDataSet1.fieldByNAme('FECHA').AsString;
self.IBDatabase1.Close;

self.IBDataSet1.Open;
self.IBDataSet1.Insert;
self.IBDataSet1.FieldByName('ID').AsInteger:=1;
self.IBDataSet1.FieldByName('FECHA').AsString:= AUX;
self.IBDataSet1.Post;
self.IBTransaction1.CommitRetaining;

el select lo realiza bien ya que utilizo un Breakpoints y tira el valor deseado,ahora bien cuando va a realizar el insert tira el siguiente error: IBDataset1:field ID not found,lo raro de esto es que si yo saco el select y dejo solamente el insert lo inserta sin problemas....la verdad que hace varios dias que estoy con esto y no se donde puede estar el error....bueno muchisimas gracias!

JoseAntonio 25-03-2009 20:25:50

Código Delphi [-]
self.IBDataSet1.SelectSQL.Text:= sSQL;

Hola, quizas también tengas que setear esta propiedad:

Código Delphi [-]
self.IBDataSet1.UpdateSQL.Text:= 'UPDATE PRODUCCION SET.....';

en todo caso quizás algo menos enredado seria que utilices un TIBQuery para tus actualizaciones en lugar de un IbDataset ... y setees algo asi como:

Código Delphi [-]
self.IBQuery1.sql.Text:= 'UPDATE PRODUCCION SET.....';

Saludos

valeria 26-03-2009 14:13:16

insertar en Firebird....
 
gracias por contestar pero la verdad que no entiendo muy bien....esto de "setear"...probe anteriormente con hacer :
self.IBDataset1.Open;
self.IBDataset1.InsertSql.Text:= 'insert into......
self.IBDataset1.ExectSql;
lo mismo si utilizo el componente IBQuery ; en el componente IBQuery especifico ,pero al realisar esto no me realiza absolutamente nada....y si cambio el ExectSql por IBDataset.insert me vuelve a tirar error...bueno desde ya muchas garcias...

dao_ar 24-11-2009 13:20:43

Hola
 
Valeria

Tambien debes completar las sentencias
DeleteSQL
InsertSQL
UpdateSQL
y la Select, que creo ya hicistes.
Si usas esos componente haces boton derecho sobre el y en Dataset Editor SQL podes completar todo en una sola operacion.

Suerte

Cita:

Empezado por valeria (Mensaje 342794)
gracias por contestar pero la verdad que no entiendo muy bien....esto de "setear"...probe anteriormente con hacer :
self.IBDataset1.Open;
self.IBDataset1.InsertSql.Text:= 'insert into......
self.IBDataset1.ExectSql;
lo mismo si utilizo el componente IBQuery ; en el componente IBQuery especifico ,pero al realisar esto no me realiza absolutamente nada....y si cambio el ExectSql por IBDataset.insert me vuelve a tirar error...bueno desde ya muchas garcias...



La franja horaria es GMT +2. Ahora son las 20:12:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi