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)
-   -   No Encuentro el Error del Trigger en FireBird 2.5 (https://www.clubdelphi.com/foros/showthread.php?t=72137)

teletranx 30-01-2011 00:21:55

No Encuentro el Error del Trigger en FireBird 2.5
 
Saludos a todos
Tengo el siguiente problema:
El trigger funcionaba bien en la versión 1.5.6 y 2.1.3 pero cuando estoy actualizando la base de datos a la versión 2.5 y compilo los trigger y varios salieron con errores, verificando no encontre nada.
El siguiente trigger es un ejemplo de ello
Código SQL [-]
CREATE OR ALTER Trigger Rem_Maefin_Bd0 For Rem_Maefin
Active Before Delete Position 0
As
Declare Variable Ano Smallint;
Declare Variable Mes Smallint;
Declare Variable Fecini Date;
Declare Variable Fecter Date;
Declare Variable Fecha Date;
begin
 If (Old.Mf_Estado = 'N') Then Exit;
 Select Parrem.Pm_Anoliq, Parrem.Pm_Mesliq
    From Parrem
   Where Parrem.Ne = Old.Ne
  Into :Ano, :Mes;
  If (Old.Mf_Estado = 'F') Then
  Begin
    Fecha = Encodedate(1, :Mes, :Ano);
   -- Exception E_Asignado Fecha;
   -- Aislando el error
    if (Old.Mf_Fecter < Fecha) then
      exception e_asignado 'No puede Borrar Finiquito, es de otro Período';
   --
    FecIni = Encodedate(1, Mes, Ano);
    FecTer = Lastdaymonth(FecIni);
    Update Rem_Tabmov Set
           Rem_Tabmov.Tm_Marca = 'S'
     Where Rem_Tabmov.Ne = Old.Ne And
           Rem_Tabmov.Tm_Numrut = Old.Mf_Rutfun And
           Rem_Tabmov.Tm_Fecter >= :FecIni And
           Rem_Tabmov.Tm_Fecter <= :FecTer;
  End
end
Cuando compilo IbExpert versión 2011.01.11, sale lo siguiente
Cita:

can't format message 13:393 -- message system code -4.
unsuccessful metadata update.
MODIFY TRIGGER failed.

Existen otros trigers que utilizo las funciones Encodedate y Lastdaymonth y no tengo problema.
Tambien he utilizado la último versión de Interbase&Firebird Development Studio y sale lo mismo
No encontrado nada de nada
He probado línea por línea el trigger cuando escribo las líneas
if (Old.Mf_Fecter < Fecha) then
exception e_asignado 'No puede Borrar Finiquito, es de otro Período';

Se produce el error, posteriormente comento las líneas y complilo continuo el error, llego a comentar todo lo que está entre el Begin y el End final y continua el error, no puedo compitar el trigger.
No se que estoy haciendo mal.
Saludos y esperando sus comentario y ayuda
Teletranx:confused:

Casimiro Notevi 30-01-2011 02:02:30

¿No será una versión beta con algún extraño error?

teletranx 31-01-2011 04:35:35

La verssión es Firebird-2.5.0.26074_1_Win32.exe, no es beta.
Está instalada como servicio y como aplicación.
En resumen en todas las modalidades y siempre me da el mismo error

Saludos :cool:

celades1 31-01-2011 07:30:25

hola

Mi opinión es que tu BD no la has respaldado bien al pasarla a 2.5
Prueba de volverlo a hacer backup con 2.1 instalado
desinstalar, instalar y hacer restore con los gfix

ej

Cita:

gbak -c -v -t -rep fitxer.fbk fitxer.ib -user SYSDBA -password masterkey
-FIX_FSS_D ISO8859_1 -FIX_FSS_M ISO8859_1
Igual no tengo razón pero yo tambien tuve problemas al pasar de 2.0 a 2.5
Yo creo que no te rompas la cabeza con el trigger, sino es la BD mal restaurada.

En fin es una sugerencia

Panta

teletranx 06-06-2011 14:50:33

Gracias a todos
La repuesta es
gbak -c -v -t -rep fitxer.fbk fitxer.ib -user SYSDBA -password masterkey
-FIX_FSS_D ISO8859_1 -FIX_FSS_M ISO8859_1
para Firebird 2.5
Lo hice que quedo todo OK

JC;)
p.d. por mi trabajo no he podido responder antes.

Casimiro Notevi 06-06-2011 15:50:23

Cita:

Empezado por teletranx (Mensaje 402725)
Gracias a todos
La repuesta es
gbak -c -v -t -rep fitxer.fbk fitxer.ib -user SYSDBA -password masterkey
-FIX_FSS_D ISO8859_1 -FIX_FSS_M ISO8859_1
para Firebird 2.5
Lo hice que quedo todo OK

JC;)
p.d. por mi trabajo no he podido responder antes.

Bueno, aunque te sobra el -t porque eso es para hacer el backup 'transportable', no sirve para restaurar.

guillotmarc 06-06-2011 20:54:53

Hola.

Echando un vistazo a tu código, veo que utilizas las funciones EncodeDate y LastDayMonth. Estas funciones no son internas de Firebird, sino que son funciones importadas de una UDF. Antes de utilizarlas debes declararlas, ¿ lo has hecho ?.

Asegúrate probando esta consulta : select EncodeDate(1,1,2000) from rdb$database

Tienes algo mal en la instalación del cliente de Firebird y por eso no es capaz de mostrarte los mensajes de error (parece que no encuentra el archivo con las descripciones de los errores, o bien encuentra el archivo de una versión anterior de Firebird). Prueba a volver a instalar el cliente de Firebird 2.5 en ese equipo, y entonces te devolverá un mensaje de error más descriptivo del problema, con lo que será mucho más fácil resolver el problema.

Saludos.

guillotmarc 06-06-2011 22:03:25

Por cierto, para poder obtener un mensaje de error descriptivo, que nos indique cual es exactamente el problema para la compilación de ese código, además de necesitar tener correctamente instalado el cliente de Firebird 2.5, asegúrate también de que te estás conectando a través de la librería cliente fbclient.dll correspondiente a Firebird 2.5 (la ubicación de la librería cliente que utilizas, es uno de los parámetros de tu conexión a la base de datos).

NOTA: El cliente de Firebird se instala mediante el mismo instalador que el Servidor de Firebird, solo que durante la instalación tienes que seleccionar la opción correspondiente.

Saludos.


La franja horaria es GMT +2. Ahora son las 12:41:13.

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