PDA

Ver la Versión Completa : Como uso el IBDataSet?


DarkSide
17-07-2005, 01:09:19
Hola, estoy comenzando a utilizar Interbase, ya he creado una base de datos, la he enlazado con los componentes de Interbase (IBX) de Delphi 5, pero no se como utilizar el IBDataset. He ingresado las consultas SQL en las propiedades deletetSql, insertsql, modifysql y refreshsql, pero no se como dar la orden para enviarle los datos y ejecutarlas. Para capturar los datos estoy utilizando Edit.

Cualquier ayuda será bien recibida, desde ya muchas gracias.

Saludos

vtdeleon
17-07-2005, 05:30:40
Saludos

Te dire de la manera en que lo uso:D, otros tienen su forma!

1) En SQLSelect introduzco la sentencia Select que deseo
2) Clic Derecho al componente, saldra una ventana(en la cual eliges los campos que deseas realizar movimientos) que generara las sentencias Modify, Update, insert qeu corresponde a SQLModify, SQLRefresh, SQLInsert respectivamente.
3) Ya hecho todo esto puedes Usar los metodos Delete, Edit, Insert del IBDataset. Ej:IBdataset.Edit, IBdataset.Insert.
A mi parecer es muy bueno ese componente, en cuestion de espacio y/o consumo de memoria y del Exe es bueno tambien, es < que IBtable y IBQuery

DarkSide
18-07-2005, 00:36:11
Hola vtdeleon, gracias por responder. Pero aun me queda la duda de como traspasar los datos desde los Edits a los campos, o deberé utilizar DBEdits?, u otro componente?.

Saludos

iuqrul
18-07-2005, 08:49:28
Hola, el componente IBDataset es un IBquery + IBUpdateSQL juntos, y todos son considerados DBAware, es decir, permiten su uso en la estructura de componentes visuales de acceso a base de datos.

Para gestionar visualmente este tipo de consultas debes vincular el IBDataset a un DataSource, y a su vez componentes DBGrib, DBEdit, DBNavigator... a ese mismo DataSource, y a través de los eventos AfterPost y AfterDelete por ejemplo la transacción asociada, eso ya depende del uso preciso que necesites.

Por supuesto, puedes utilizar otro tipo de componentes y gestionar manualmente la edición de los datos:

...{Inserción}
with IBDataset do begin
Insert;
FieldByName('NombreCampoInteger').AsInteger:=integer;
FieldByName('NombreCampoString').AsString:=string;
FieldByName('NombreCampoCurrency').AsCurrency:=currency;
...
Post;
end;
...{Edición}

with IBDataset do begin
Edit;
FieldByName('NombreCampoInteger').AsInteger:=integer;
FieldByName('NombreCampoString').AsString:=string;
FieldByName('NombreCampoCurrency').AsCurrency:=currency;
...
Post;
end;

...{Borrado}

IbDataSet.Delete;

Aunque si optas o necesitas una gestión manual, quizá mejor usar IBSQL, que son más eficaces.

Un saludo.

DarkSide
18-07-2005, 21:48:28
Gracias por responder iuqrul, me ha quedado muy clara tu respuesta. Por lo que he visto al trabajar en Interbase, todas las operaciones que me indicaste quedan en memoria y solo se traspasan a la base de datos al hacer un commit a la transaccion, pero me he dado cuenta que al hacer este commit, se cierra la transacción por lo tanto tengo que volverla a abrir. Esto esta bien, o estare realizando alguna tarea equivocada?. Me avisas si necesitas ver el codigo fuente, ya que en estos momentos no lo tengo a mano.

Saludos