Somar Horas Trabalhadas

03/07/2008

2

Preciso somar as horas trabalhas dos funcionarios:

por exemplo a :

HorEnt1 >>>>quando entra de manha
HorSai1 >>>>quando sai para o almoco
HorEnt2 >>>>quando entra depois do almoco
HorSai2 >>>>quando sai depois do almoco

ai eu preciso fazer essa dessas entradas e saidas(os intervalos)

A minha tabela tem essa estrutura:

Codigo
Funcionario
Data
HorEnt1
HorSai1
HorEnt2
HorSai2

Eu utilizo o Firebird 2.0 e delphi 7


Responder

Posts

03/07/2008

Altingon

Tente isso

Function DifHora(fim,Inicio : String):TdateTime;
var
  tinicio,tfim:TDateTime;
begin
if (inicio = ´  :  ´) and (fim = ´  :  ´) then
  begin
    Tinicio := strtotime(´00:00´);
    Tfim := Strtotime(´00:00´);
  end
else
  begin
    Tinicio := strtotime(inicio);
    Tfim := Strtotime(fim);
  end;  
If (tinicio > tfim) then
  begin
    if timetostr(tfim) = ´00:00:00´ then
      begin
        result := (StrTotime(´23:59´)+ StrToTime(´00:01´)-tinicio)+tfim
      end
    else
     result := (StrTotime(´23:59´)-tinicio)+tfim;
  end
else
  begin
    result := tfim-tinicio;
  end;
end;
[/code]


Responder

03/07/2008

Robinhocne

mas é assim eu tenho que pegar tudo já que está no bando e mostrar em um tmaskedit, como eu faço ?


Responder

03/07/2008

Edilcimar

Seria algo mais ou menos assim
Select Sum(HoraSaida) as TotalSaida, Sum(HoraEntrada), as TotalEntrada;
Total := TotalSaida - TotalEntrada


Responder

03/07/2008

Altingon

Esta função retorna do time Tdatetime.

basta buscar no banco e usar a função assim:

MaskEdit5.Text := timetostr(DifHora(query.fieldbyname(´datafim´).asstring,query.fieldbyname(´dataini´).asstring)



Responder