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!!! |
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 |
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? |
Porque todo este esfuerzo si existe el componente IBDataset? probalo a ver q..
|
explicate más...
|
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 ;) |
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..
|
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 !!! |
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..
|
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