PDA

Ver la Versión Completa : No almacena cambios IBTABLE


cesar_picazo
22-11-2005, 01:06:15
Buenas tardes

Estoy utilizando Delphi 6 y de Base de datos Firebrd 1.5, encontre algo que creo es un mega bug, ya que al usa IBTABLE me pierde informacion.

Va el ejemplo:

Estoy utilizando los IBX para el maestro detalle y uso IBtable para conectar los datos y para almacenarlos con post.

Al crear un nuevo registro y modificar el renglon todo va bien. pero cuando pongo un valor y me regreso nuevamente a modificar el renglon y le doy almacenar o bien post a la tabla, no me almacena la informacion que cree cree

Ejemplo:
campo 1 campo 2
nuevo1
nuevo2 nuevo2
nuevo3
nuevo1 Se modifica el primer campo
nuevo3 Se modifica el primer campo

Almaceno los datos post, cierro la aplicacion y vuelvo a abrir y solo almaceno lo primero
nuevo1
nuevo2 nuevo2
nuevo3
las modificaciones sobre 1 y tres no las almacena.

Alguien sabe el motivo y si existe alguna forma de corregirlo. Nota es maestro detalle y la llave del padre son 6 campos 5 texto y uno numeric 14 digitos

Nota el post se hace hasta el final.

Toni
22-11-2005, 08:35:59
Hola,

Los componentes IBX funcionan correctamente, yo de ti miraria si tienes bien configurado IBTransaction, y buscar en el foro respecto a 'transacciones interbase'.

Saludos,

fidel
22-11-2005, 17:37:31
Hola:

Los megabugs casi siempre los solemos tener en nuestro código, revisalo, pues los IBX ya llevan bastante tiempo y parece que funcionan correctamente.


Te copio algo que bajé alguna vez sobre componentes IBX

IBTable.- Es un descendiente de TDataSet que permite conectarse a una tabla de interbase "al estilo" de los ya conocidos TTables de la BDE. No se recomienda utilizar, ya que se puso por motivos de facilitar la migración de aplicaciones a los IBX.

IBDatabase .- Este componente funciona de manera similar al Database de la BDE, pues es el que hace la conexión principal a InterBase y donde se especifican los parámetros de conexión (ruta hacia la base de datos, nombre de usuario, contraseña).

IBTransaction .- Este componente maneja las transacciones de la base de datos. Aquí difieren los IBX con la BDE, donde las transacciones también son manejadas por el TDatabase.

IBDataSet.- Este es nuestro componente "estrella", pues es el que se recomienda para hacer las conexiones a tablas y vistas de la base de datos. Entre sus características principales es que permite especificar una instrucción SQL para cada acción del IBDataSet (Insertar/Modificar/Eliminar y Consultar datos).

Un saludo.

RONPABLO
22-11-2005, 19:37:26
Pues no se si entendi bien pero creo que despues del post debe colocar algo asi como lo siguiente:


...
IBTablex.post;
IBTablex.applyUpdate;
IBTransaction.commit;


Aunque yo siempre hago el post cada vez que cambio, algo asi como lo siguiente:


...
unnumero := 0;
while not IBTablex.Eof do
begin
if IBTablex.RecordCount=0 then
IBTablex.Edit
else
IBTablex.Insert;
IBTablex.FielbByName('incrementar').asInteger := unnumero;
IBTablex.post;
IBTablex.next;
unnumero:= unnumero + 1;
end;
IBTablex.applyUpdate;
IBTransaction.commit;

cesar_picazo
22-11-2005, 20:53:06
Pues a mi me parece lo mismo, que es un error de mi aplicacion, pero lo hice ya con varios componentes.

Lo que voy a hacer es reinstalar windows, reinstalar delphi y volver a hacer la prueba yo creo que me tardo un par de dias, pero de seguir con el bug, voy a publicar el codigo de la aplicacion y la estructura de las tablas que estoy utilizando.

Por sus respuestas gracias.