Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-12-2007
victor2023 victor2023 is offline
Miembro
 
Registrado: abr 2006
Posts: 22
Poder: 0
victor2023 Va por buen camino
problema con HoursBetween

Hola que tal, tengo un buen problema que no he podido resolver espero me puedan ayudar, en el sistema que estoy desarrollando tengo problemas con un reporte, se trata de hacer el calculo entre dos horas para sacar el numero de horas trabajadas por un tecnico, lo que pasa que cuando hace el calculo de horas cuando las dos son p.m o a.m si da bien el resultado por ejemplo empezo el trabajo a las 9.00 p.m y termino a las 10.00 p.m es una hora entre esas horas pero cuando existe 10.59 p.m y que termino a la 1.25 a.m el resultado me da que son 21 horas de diferencia entre esas dos horas, utilizo una base de datos de firebird con sql dialect 1, el campo donde almaceno las horas de trabajo son campos doubleprecision, el resultado lo pongo en un campo calculado, el codigo es este:

Código Delphi [-]
 
procedure TfrmRepTecnicos.iqrHorasCalcFields(DataSet: TDataSet);
var
fHoras,horas,horas1,minutos: Double;
begin
iqrHorasCALC_HENTRADA.AsDateTime := FloatToDateTime(iqrHorasHENTRADA.AsFloat);
iqrHorasCALC_HSALIDA.AsDateTime := FloatToDateTime(iqrHorasHSALIDA.AsFloat);
iqrHorasCALC_HORAS.AsInteger := HoursBetween(FloatToDateTime(iqrHorasHENTRADA.AsFloat),FloatToDateTime(iqrHorasHSALIDA.AsFloat));
fHoras := HoursBetween(FloatToDateTime(iqrHorasHENTRADA.AsFloat),FloatToDateTime(iqrHorasHSALIDA.AsFloat));
if iqrHorasCALC_HORAS.AsInteger > 0 then
iqrHorasCALC_MINUTOS.AsFloat := (MinutesBetween(iqrHorasCALC_HENTRADA.AsDateTime,iqrHorasCALC_HSALIDA.AsCurrency)) mod (iqrHorasCALC_HORAS.AsInteger * 60) //(MinutesBetween(FloatToDateTime(iqrHorasHENTRADA.AsFloat),FloatToDateTime(iqrHorasHSALIDA.AsFloat)) mod (iqrHorasCALC_HORAS.AsInteger * 60))
else
iqrHorasCALC_MINUTOS.AsFloat := MinutesBetween(iqrHorasCALC_HENTRADA.AsDateTime,iqrHorasCALC_HSALIDA.AsCurrency);
if iqrHorasTIPO.Value = 'C' then
begin
iqrHorastipocte.Value := 'Casa';
end
else
begin
iqrHorastipocte.Value := 'Empresa';
end;
end;

Última edición por dec fecha: 31-12-2007 a las 15:40:19.
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


La franja horaria es GMT +2. Ahora son las 12:20:08.


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