Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   error al modificar registro con firebird (https://www.clubdelphi.com/foros/showthread.php?t=49941)

joanajj 04-11-2007 13:14:24

error al modificar registro con firebird
 
Buenas a todos después de tanto tiempo...

Tengo una base de datos en Firebird 2.0 y uso los componentes MDO para el tratamiento de los datos.
La aplicación funciona correctamente salvo cuando intento modificar un registro.
Al modificar un registro:

xxxx.edit;
xxxx.campo.value:=nuevo valorM;
xxxx.post;

Lo hace sin error, pero al cerrar la BD y volver a abrirla, veo que no se ha modificado, pero sobre la marcha hago la modificación de nuevo y al cerrar y abrir, si que se ven los cambios.
El problema es ese, porque tengo que cerrar la BD , volver a abrirla para hacer la modificacuión y que se vean los cambios.
He probado a hacer el commit antes de modificar y nada de nada...

No sé por que puede seer, alguien tiene una idea....???

Gracias...

Lepe 04-11-2007 13:40:59

El objeto TMDOTransaction tiene la propiedad AutoCommit, ponla a true. Así después de guardar un dato, se hace el commit automático (entre otras cosas).

Cita:

He probado a hacer el commit antes de modificar y nada de nada...
Se debe hacer después de las modificaciones. Deberías leer sobre cada tipo de transacciones, en www.ibphoenix.com y www.firebird.com.mx también sobre commit, commitRetaining, para que decidas lo que mejor te conviene.

No haría falta cerrar la BD, sino el Dataset donde has hecho el cambio y volverlo a abrir, de nuevo esto depende del uso de commit o bien CommitRetaining.

Saludos

joanajj 05-11-2007 23:35:02

sigue sin funcionar
 
Buenas de nuevo, la cosa sigue igual.

Hasta que no hago el proceso de modificación 2 veces no se reflejan los cambios.
He probado todo lo que se me ocurre y nada.

El proceso de nuevo registro funciona correctamente,, pero el de modificar ,. que se diferencia de añadir por el 'append', que en el caso de modificar cambia el valor del registro actual., no funciona, tengo que hacer el mismo proceso 2 veces para que funcione.

Se os ocurre algo más ????

Un saludo...

Lepe 06-11-2007 09:32:34

Mira sobre todo el evento AfterScroll y beforePost, por si tienes algún código que cancele el guardado.

Los MDO funcionan perfectamente. Pon el código que usas para editar el registro, igual vemos algo.

Saludos

joanajj 09-11-2007 00:48:09

os paso el código
 
Esto es lo que hace al modificar:

Código:

form1.dataarq.Edit;

 form1.dataarqFECHAAR.value:=fech1.Date;
 form1.dataarqCONCEPTOAR.Value:=coned.Text;
 if cob.Checked=true then
  begin
  form1.dataarqENTRADAAR.AsFloat:=imped.Value;
  form1.dataarqSALIDAAR.Value:=0;
  end
  else
  begin
  form1.dataarqsalidaar.AsFloat:=imped.Value;
  form1.dataarqENTRADAAR.Value:=0;
  end;
 form1.dataarq.Post;

y para que los datos queden almacenados tengo que aplicar la modificación,
abrir y cerrar el dataset, volver a realizar la misma modificación por 2ª vez y entonces es cuando se quedan grabados los datos modificados...

No sé que probar...Saludos...

tefots 09-11-2007 09:19:30

haz doble click sobre el mdotransacction , y ponle read commited.

Despues de hacer el form1.dataarq.Post;
haz un form1.dataarq.transaction.commitretaining.


si tienes algun otro dataset que este usando esa tabla , deberas hacerle un refresh o cerrarlo y abrirlo para que ese dataset refresque los datos.

saludos.

joanajj 09-11-2007 16:15:42

Lo he intentado y nada...
 
He hecho lo que me han dicho y sigue sin funcionar, una cosa tan elemntal y no vá.

Una pista más:

En el ModifiSQL del Mdodataset figura:

Código:

UPDATE ARQUEO1
SET
  FECHAAR = :FECHAAR,
  CONCEPTOAR = :CONCEPTOAR,
  ENTRADAAR = :ENTRADAAR,
  SALIDAAR = :SALIDAAR,
  CUENTO = :CUENTO
WHERE
  CUENTO = :OLD_CUENTO

Por si sirve de algo....

Gracias....


La franja horaria es GMT +2. Ahora son las 17:15:51.

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