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)
-   -   Actualizar tabla Maestro con FIBPlus (https://www.clubdelphi.com/foros/showthread.php?t=82600)

Jose Roman 22-03-2013 15:11:53

Actualizar tabla Maestro con FIBPlus
 
Hola a todos,

Trabajo con Delphi 2007 y FIBPlus 6.9. En el formulario tengo una tabla maestro tbFacAcu y una tabla detalle tbAbono, esta relacion funciona a la perfeccion, el problema me ocurre cuando trato de actualizar un campo en la tabla maestro (lo hago por medio de codigo) y este no lo actualiza:
Código Delphi [-]
tbFacAcu.Edit;
tbFacAcuESTAD.Value := 'C';
tbFacAcu.Post;
tbFacAcu.Refresh;

No se si hay que realizar un paso mas para que esto suceda???

ecfisa 22-03-2013 17:40:07

Hola Jose.

No uso los componentes FIBPlus, pero la porción de código que mostras es correcta y teóricamente debería guardar el cambio.

Bajo el título Bugs Fixed, leí esto:
Cita:

4. In some cases TpFIBDataSet.Refresh worked incorrectly if SelectSQL used macros. Now it has been fixed.
de este enlace: FIBPlus 7.4 Release Notes. No sé si este sea el motivo, pero es una posibilidad.

Saludos.

Casimiro Noteví 22-03-2013 18:01:19

Haría falta ver el sql y los parámetros de los componentes.

Al González 22-03-2013 18:49:02

Justo después de hacer el Post y antes de hacer el Refresh, verifica qué valor tiene el campo ESTAD. E intenta cambiando ese Refresh por Close + Open.

Sólo para indagar.

cloayza 25-03-2013 13:35:00

Cita:

Empezado por Jose Roman (Mensaje 457403)
Hola a todos,

Trabajo con Delphi 2007 y FIBPlus 6.9. En el formulario tengo una tabla maestro tbFacAcu y una tabla detalle tbAbono, esta relacion funciona a la perfeccion, el problema me ocurre cuando
trato de actualizar un campo en la tabla maestro (lo hago por medio de codigo) y este no lo actualiza:
Código Delphi [-]
tbFacAcu.Edit;
tbFacAcuESTAD.Value := 'C';
tbFacAcu.Post;
tbFacAcu.Refresh;

No se si hay que realizar un paso mas para que esto suceda???

Bueno una posible causa es que no estes confirmando la transacción. Para esto hay 2 maneras.

1) Si estas usando el componente TpFIBDataset, puedes activar la propiedad AutoCommit, con lo cual cada vez que haces un Edit...Post se confirma la transacción.
2) Controlar la transacción tú mediante es el siguiente código:
Código Delphi [-]
Transacion.StartTransaction;
tbFacAcu.Edit;
tbFacAcuESTAD.Value := 'C';
tbFacAcu.Post;
Transacion.CommitRetaining;
--tbFacAcu.Refresh; Esta línea está de más, ya nque la propiedad TpFIBDataset.Options tiene marcada por default la poRefreshAfterPost, que le indica que 
despues de realizar el post refresque el registro.
Siendo Transacion el componente TpFIBTransaction correspondiente.

Bueno eso sería...


La franja horaria es GMT +2. Ahora son las 14:18:17.

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