PDA

Ver la Versión Completa : Problemas de actualizacion Master-Detail


Hidalgo
05-09-2003, 15:29:50
Hola, les comento que estoy trabajndo con base de datos Informix, aunque no creo que este el motor se mi problema, uso la version 5 de Delphi.

Estoy trabajando con los componentes TDatabase y me conecto por ODBC a mi base. Tengo una Tabla Master y varias tablas Detail que se relacionan con tres campos claves. Las Tablas detail estan relacionadas a sus respectivos DBGrids, cuando realizo inserciones nuevas trabaja sin problemas, pero cuando quiero modificar algun registro me salta un error "Couldn't perform the edit because another user changed the record".

No entiendo lo que sucede, porque he trabajo con otras tablas en otras aplicaciones de la misma manera y no tengo el error.

Por favor necesito una guia de porqué tengo este problemas, ya que he intendado con todo, creando mas tablas, no usando filtros, y otras que ya ni recuerdo y continua el error.

Gracias de Antemano

guillotmarc
05-09-2003, 17:26:10
Hola.

Nunca he trabajado con Informix, pero el mensaje de error te está indicando que el registro que quieres modificar, ha variado desde la ultima vez que accedió el componente (por eso presupone que otro usuario lo ha modificado).

Está claro que tu problema no viene porqué otro usuario haya modificado el registro. Lo que puede pasar, es que tengas dos datasets apuntando a los mismos datos, si modificas los datos desde uno, cuando el otro intente modificar se encontrará con que los datos en la base de datos són distintos a los suyos, por lo que te saltará ese error.

También puede ser problema por culpa de un trigger. Haces algo en los registros detalles, estos mediante un trigger modifican el maestro. Entonces cuando intentes guardar el registro maestro, el dataset fallará puesto que encontrará diferencias en los datos.

Tienes que buscar algo de este estilo, que modifica los datos en la base de datos sin que se entere el correspondiente Dataset.

NOTA : Claro que también puede ser algún error del ODBC o de los componentes que usas. Puesto que nunca he utilizado Informix no lo puedo asegurar. Pero lo dudo, más bien tiene el aspecto que he comentado, de que algún proceso modifica los datos antes de guardar el registro.

Saludos.

Hidalgo
05-09-2003, 22:58:46
Gracias, pero al revisar mis enlaces no he descubierto nada de esto, incluso he creado tres tablas distintas para cada Detail, los tres Details estan enlazados por 3 campos claves que son los mismos en las tres tablas el master es un componente TQuery.

Estoy de acuerdo contigo que la base de datos Informix no sea el problema, es la forma que estoy enlazando o tratando los componentes TTable y TQuery con los TDBGrids.

Por si acaso estoy usando Transacciones Rollback y Commit.

Les agradeceria ma spistas para descubrir mi error.