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)
-   -   Dudas con IBTable (https://www.clubdelphi.com/foros/showthread.php?t=18804)

Fita 23-02-2005 14:55:34

Dudas con IBTable
 
Hola a todos...

Estoy migrando mis aplicaciones BDE a Interbase y no estoy seguro de utilizar IBTable ya que como novato en Interbase todavía tengo muchas dudas. En principio se ve como un paso rápido a Interbase.
Cualquier comentario al respecto será bienvenido, Gracias!!!

BlueSteel 23-02-2005 15:23:32

Hola FITA...

te puedo contar que en un principio hice el mismo procedimiento que describes... pero me cambie mejor a IBQuery... ya que por sentencias sql puedes realizar más cosas.... y al menos para mi (que no se mucho de sql ) me ha resultado super facil....

Aunque por lo que me han dicho... el codigo Sql (sentencia) es más rápida.. :p

Fita 23-02-2005 16:04:49

Gracias Marcel...

De hecho estoy trabajando que el IBQuery, pero no puedo editar los campos de la tabla directamente. Mis forms tienen una barra de botones que permiten añadir, borrar y modificar un registro. Los campos de cada registro son mostrados por un DBedit enlazado a cada campo... como hago para editar un Query? (con una tabla es Table1.edit, post, etc...)
La solución que encontré (por ahora) fué agregar un form para modificar y uno para añadir con campos edit comunes, muevo los datos a cada edit y luego hago el update del IBQuery. Pero esto me llevaría a modificar toda la aplicación por completo...

Alguna idea?

Delfino 23-02-2005 18:25:48

Porque todo este esfuerzo si existe el componente IBDataset? probalo a ver q..

pkbza 23-02-2005 20:18:37

explicate más...

BlueSteel 23-02-2005 20:29:53

Fita, segun lo que entendi tu quieres ::D

En un Formulario (Clientes, x Ejemplo de 4 campos), realizar el proceso de listar a traves de un DBGrid, Insertar un Registro y eliminar...
Yo lo trabajo de la siguiente Forma :

1 Formulario con los siguientes componentes :

- 1 DBGrid (Enlazado al Datasourse DS_Select )
- 2 IBQuery ( a uno lo llamaremos IBQ_Select y al otros IBQ_Edit )
- 2 IBTransaction ( a uno lo llamaremos IBT_Select y al otro IBT_Edit )
- 1 DataSouse (lo llamaremos DS_Select )
- 2 SpeedButton ( 1 para Insertar y 1 para Eliminar )
- 1 IBDataset (lo llamaremos IBD_Clientes )
- 4 TEdit...Codigo, Nombre, Direccion y Fono

El IBT_Select y el IBT_Edit deberan estar enlazado al IBDataset
El IBQ_Select debera estar enlazado a la Transacción IBT_Select
El IBQ_Edit debera estar enlazado a la Transacción IBT_Edit
Comensamos... entonces

Evento OnCreate del Form1... poner

Seleccionar;

Procedure TForm1.Seleccionar;
Begin
IBQ_Select.Sql.Close;
IBQ_Select.Sql.Clear;
IBQ_Select.Sql.Add('Select * From "Clientes" Order By "Cli_Codigo"');
IBQ_Select.Sql.Open;
End;
// Esto que esta a continuación lo agregar en el evento OnClick del Boton Agregar....

IBQ_Edit.Sql.Clear;
IBQ_Edit.Sql.Add('Insert Into "Clientes" ("Cli_Codigo","Cli_Nombre","Cli_Direccion","Cli_Fono")');
IBQ_Edit.Sql.Add('Values (:codigo, :nombre, :direccion, :fono)');
IBQ_Edit.Params[0].AsString := Codigo.Text;
IBQ_Edit.Params[1].AsString := Nombre.Text;
IBQ_Edit.Params[2].AsString := Direccion.Text;
IBQ_Edit.Params[3].AsString := Fono.Text;
IBQ_Edit.ExecSql;
IBT_Edit.Commit;
IBT_Select.Commit;
Seleccionar;
// Esto que esta a continuación lo agregar en el evento OnClick del Boton Eliminar....

IBQ_Edit.Sql.Clear;
IBQ_Edit.Sql.Add('Select * From "Clientes"');
IBQ_Edit.Sql.Add(Where "Cli_Codigo"=:codigo');
IBQ_Edit.Params[0].AsString := IBQ_Select['Cli_Codigo'];
IBQ_Edit.ExecSql;
IBT_Edit.Commit;
IBT_Select.Commit;
Seleccionar;
Espero que esto te ayude a aclarar algo.... :D :p ;)

Delfino 23-02-2005 20:36:50

Todo esto se puede hacer solo con el raton en tiempo de diseño, mediante la propiedad SelectSQL del IBDataset y pinchando en el con el boton derecho y con el asistente SQL Editor..

Fita 27-02-2005 14:34:05

Ante todo, gracias a todos por las ideas... De a poco voy ordenando la ensalada de conceptos que tengo en el cerebro. Pero mi aplicación ya funciona, habrá que pulir cosas pero funciona.
Obviamente que aun tengo dudas y quiero aprovechar la oportunidad para plantearlas.

1) Como obtengo el total de registros de una tabla ? el IBDataset.Recordcount devuelve 1

2) Estoy utilizando el IBDataset y como aclara Delfino, genera en tiempo de diseño las sentencias SQL, esas sentencias generadas cómo se utilizan ?
Yo hago algo similar a lo de Blue steel.

3) Utilizar IBDataset.Edit e IBDataset.Post esta bien ? o deben utilizarse en qué situaciones?

Saludos !!!

Delfino 01-03-2005 21:40:00

A partir de fijar esa&s sentencias sql con el asistente, puedes usar al IBDataset como cualquier otro dataset en casi todo, los metodos edit post insert etc. funcionan lo mismo q en los dataset q conoces, el refresh refresca solo el registro actual y obtener el recordcount se puede mediante una consulta sql (select count(*) from tabla), para esa consulta mejor utilizar el IBSql, de otra de manera tienes q llamar al metodo last y asi recordcount devolvera un numero correcto..

Fita 02-03-2005 00:48:09

Gracias Delfino...

Agradezco tu respuesta, cada día avanzo y me meto mas en Interbase.
Muchas gracias nuevamente

Un abrazo
Fita


La franja horaria es GMT +2. Ahora son las 06:01:33.

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