Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-07-2010
egbaquela egbaquela is offline
Miembro
 
Registrado: jul 2007
Posts: 21
Poder: 0
egbaquela Va por buen camino
Problema con fechas de Firebird

Hola a todos. Estoy teniendo un problema con el tipo de datos "Date" en Firebird. Cree una base de datos en Firebird y exporté masivamente datos de otra base de datos de MS Access. Los campos de tipo "Date" del MS Access los capturé así:
Código:
procedure ExportarDatos
var
         DTFecha: string;
         Dia, Mes, Anio : word;
         ...
begin
         ...
         if  dmdDataMod.SQLTabla.FieldByName('DTFecha').AsString = '' then
            DTFecha:= 'NULL'
         else
         begin
            DecodeDate(dmdDataMod.SQLITabla.FieldByName('DTFecha').AsDateTime, Anio, Mes, Dia);
            DTFecha :=  '''' + inttostr(Dia) + '.' + inttostr(Mes) + '.' + inttostr(Anio) + '''';
         end; 
        ...
Y para cargar los datos a la base firebird utilicé la siguiente consulta SQL (dentro del mismo procedimiento anterior):
Código:
      with SQLEjecutable do begin
         close;
         sql.clear;
         sql.add('INSERT INTO tblTabla(..., DTFecha,... ) VALUES (... +', ' + DTFecha +',  ' ...);
         readonly:= true;
         usePrimaryKeyAsKey:= false;
      end;
      if SQLTransaction.Active then SQLTransaction.Commit;
      SQLTransaction.StartTransaction;
      SQLEjecutable.ExecSQL;
      SQLTransaction.Commit;
Los datos se graban correctamente, y al utilizar un SELECT también me aparecen con el valor correcto. El problema es cuando actualizo registros desde el cliente de la aplicación (ya no de Access, sinó desde Lazarus). Los registros los actualizo con el siguiente código:
Código:
procedure actualizarRegistro
var
   strFecha: string;
   Dia, Mes, Anio : word;
begin
   DecodeDate(deFecha.Date  , Anio, Mes, Dia);
   strFecha := '''' + inttostr(Dia) + '.' + inttostr(Mes) + '.' + inttostr(Anio) + '''';
   with SqlQuery do begin
      close;
      sql.clear;
      sql.add('UPDATE tblIsometricos SET dtFecha = ' + strFecha + ' WHERE IDReg = ' +  SQLTabla.FieldByName('IDReg').AsString);
      readonly:= true;
      usePrimaryKeyAsKey:= false;
   end;
   if SQLTransaction.Active then SQLTransaction.Commit;
   SQLTransaction.StartTransaction;
   SQLQuery.open ; 
end;
Donde "deFecha" es un TDateEdit de form que ejecuta el procedimiento, "SQLQuery", "SQLTabla" y "SQLEjecutable" son TSQLQuery, "SQLTransaction" es un SQLTransaction.
Cuando hago un SELECT y muestro los resultados en un TDBGrid, las fechas me parecen en el formato del sistema operativo (Windows XP en mi caso), el cual es DD/MM/YYYY. Pero, cuando exporto el contenido de la tabla a un archivo "TXT", las fechas que se cargaron en forma masiva siguen respetanto el formato DD/MM/YYYY pero la que se agregaron desde el cliente se cambian al formato MM/DD/YYYY, por mas que en el TDBGrid se muestren como DD/MM/YYYY. La obtención de la fecha para la exportación la realizo con el siguiente código:
Código:
var
    strFecha: string;
    ...
begin
    ...
    strFecha:= SQLTabla.FieldByName('dtFecha').AsString;
    ...
end;
Cualquier exportación dispone tanto de registros "nuevos" como de los cargados masivamente. Lo que me desconcierta es que este cambio de formato lo realiza solo para los registros "nuevos", los registros cargados masivamente se comportan correctamente (es decir, tanto en el TDBGrid como en el archivo de texto generado mantienen el mismo formato).
¿Alguien sabe por que puede estar pasando esto?.
Saludos, Gabriel.

PD: la versión de lázarus que uso es la 0.9.27.
www.egbaquela.com.ar
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Firebird dialect 3 y fechas IVAND Firebird e Interbase 5 17-09-2008 19:16:48
firebird y fechas jmlifi Varios 4 05-09-2007 09:54:59
Fechas en Firebird Puche Firebird e Interbase 3 27-07-2006 10:09:52
Consultar fechas en firebird (SQL) pepitu Firebird e Interbase 7 28-09-2005 19:19:23
Formato de fechas en FireBird 1.5 defcon1_es Firebird e Interbase 1 02-04-2004 17:02:52


La franja horaria es GMT +2. Ahora son las 11:22:34.


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
Copyright 1996-2007 Club Delphi