Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas al guardar HORA (https://www.clubdelphi.com/foros/showthread.php?t=39751)

Sara Paz 29-01-2007 13:36:27

Problemas al guardar HORA
 
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 :)


La franja horaria es GMT +2. Ahora son las 11:55:29.

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