PDA

Ver la Versión Completa : Problemas al guardar HORA


Sara Paz
29-01-2007, 13:36:27
Saludos.
Uso DELPHI 6, FIREBIRD 1.5 y componentes de acceso a la BD FIBPLUS.
Se me plantea el siguiente problema.
Campo HORA, tipo TIME en una tabla cualquiera.
Desde código Delphi, en el evento AfterInset del componente de la tabla hago tbl_MyTablaHORA.Value := Now;. Al insertar un registro, se presenta el valor correcto en pantalla, p.e. las 16:30:40. Pues bien, al hacer el Post del registro el valor cambia a 7:29:15, que es exactamente el tiempo que falta hasta las 23:59:59. Siempre se reproduce este comportamiento.
He comprobado que a la base de datos le llega el valor cambiado, por lo que el problema deberá estar en el programa y/o sus componentes.
Si dejo el campo HORA sin asignar, como en un Trigger BeforeInsert de la tabla tengo puesto IF (NEW.HORA IS NULL) THEN NEW.HORA = CURRENT_TIME, todo va bien. Pero no puedo asignar un valor desde el programa porque cambia el valor según lo explicado anteriormente.
¿Alguien ha tenido un problema parecido o puede darme una explicación del porqué de este comportamiento aparentemente anormal?.
Gracias.
Sara Paz.

Sara Paz
11-02-2007, 10:53:23
Solucionado el problema. Comunico la solución enviada por el Equipo de Desarrollo de FIBPlus para conocimiento general de aquellos que usen estos componentes.

Hay que hacer lo siguiente:

Modificar el codigo de: unit FIBQuery;
method
function TFIBXSQLVAR.GetAsDateTime: TDateTime;

Reemplazar las siguientes líneas: SQL_TIMESTAMP:
begin
Result:=
PISC_QUAD(FXSQLVAR^.sqldata)^.gds_quad_high-IBDateDelta+
PISC_QUAD(FXSQLVAR^.sqldata)^.gds_quad_low/MSecsPerDay10;
end;


Por estas otras: SQL_TIMESTAMP:
begin
Result:=
HookTimeStampToDateTime(AsTimeStamp);
end;


Abrir desde Delphi FIBPlus6.dpk y compilar.Saludos.
Sara Paz.

Casimiro Notevi
11-02-2007, 12:36:09
Gracias por compartirlo :)