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 actualizar tabla con generador (https://www.clubdelphi.com/foros/showthread.php?t=8938)

lafirma 06-04-2004 22:16:44

Error al actualizar tabla con generador
 
Esta sucediendome algo muy curioso, tengo un form donde actualizo varias tablas, pero en una de ellas las actualizaciones no se efectuan, para esa tabla uso un TClientDataSet.
Estaba usando firebird 1.03 y lo cambie por la 1.5, usando IBX, supuse que por eso era el problema (alguna imcompatibilidad no conocida...), pero al regresar a la 1.03 el problema continua.
He revisado el codigo hasta la saciedad, no encuentro ningun error, asi es que he ido 'aislando' el error para identificar plenamente que esta pasando.
Al final he llegado a la conclusion que el problema se da en un generador que tengo para esa tabla, cuando insertaba el generador no se actualizaba, a pesar que obtenia el valor en un trigger, dicho trigger se ejecuta pero el generador no se actualizaba, a veces salvaba los registros y a veces no, (aun con la version 1.03)
Lo que he hecho hasta ahorita es que he creado un nuevo generador con otro nombre y borro el anterior... y todo funciona de nuevo.
El problema es que son varias bases de datos y tendria que hacer eso por cada una de ellas. Imagino que debere sacar un backup y despues recuperar nuevamente c/u de las bases de datos por cualquier inconstencia dentro de los archivos...
Alguna idea de porque puede pasar esto?

guillotmarc 06-04-2004 22:34:48

Hola.

Nunca había oído un error como este. Solo comentarte que es mejor no utilizar directamente una base de datos creada en Firebird 1.03, sobre Firebird 1.5. (Y lo mismo al revés, es mejor no volver a utilizar con Firebird 1.03 una base de datos abierta con Firebird 1.5).

Esto es porqué cada versión hace pequeños cambios en los metadatos de la base de datos (añade índices, ...). Así que lo que se recomienda para cambiar de versión una base de datos, es hacer una backup de la misma, y restaurarlo con el nuevo Servidor.

Aunque ni mucho menos me atrevo a asegurar que este haya sido el caso, si que lo veo posible.

¿ Puedes averiguarlo, comprobando si funciona correctamente el generador en una base de datos que nunca se haya abierto con Firebird 1.5 ?.

Para simplificar el proceso de actualización de las distintas Bases de Datos, te recomiendo que te crees un Script, donde englobes todas las instrucciones a ejecutar (drop trigger ..., create trigger ...). Así en un solo paso actualizas la Base de Datos.

Lo de hacer un Backup y un Restore posterior, siempre es una buena idea, a mi me gusta hacerlo periodicamente, cada cierto tiempo, aunque no tenga ningún problema. Te aseguras la detección de problemas de corrupción, se vuelven a crear balanzeados los índices, etc. ...

Saludos.

lafirma 07-04-2004 00:55:21

Marc, a mi tampoco me habia sucedido nada parecido, he sacado copias de las bases de datos y las dejare con la version 1.5 despues de ejecutar algunos scripts de actualizacion.
Con todo esto estoy asombrado, todo ocurria excepto el generador que no se daba por 'enterado' que debia actualizarse tambien...


La franja horaria es GMT +2. Ahora son las 12:21:32.

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