Fórum Relatório soma de horas #339634

30/03/2007

0

Problema! não consigo somar o Total Geral ( horas trabalhadas no mes )

Tentei dessa forma:
procedure TfrmRhorasTrabalhadas.QRBand3BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
var
Ema,Sma,Eve,Sve,Total: TTime;
begin
Modulo1.setPonto.First;
while not Modulo1.setPonto.eof do
begin
Ema := Ema + Modulo1.setPontoENTRADA_MA.Value;
Sma := Sma + Modulo1.setPontoSAIDA_MA.Value;
Eve := Eve + Modulo1.setPontoENTRADA_VE.Value;
Sve := Sve + Modulo1.setPontoSAIDA_VE.Value;
Modulo1.setPonto.Next;
end;
Total := (Sma-Ema)+(Sve-Eve);
qrlblTotalGeral.Caption := TimeToStr(Total);
end;

O problema é que o resultado dessas contas na variavel Total é sempre um valor float, ex: 1,541648554E24 entao quando chega na ultima linha de comando ´qrlblTotalGeral.Caption := TimeToStr(Total);´ ha um erro dizendo que o resultado é uma operação invalida. ´Invalid flothing point operation´.

O que eu faço, me ajudem !

Obrigado pela atenção.


Ullrich

Ullrich

Responder

Posts

30/03/2007

Dmenin

faça uma função q transforma o time para segundos, some os segundos no afterPrint e guarde numa variavel global como integer e faça outra função que transforme segundos para time no before print de seu result


Responder

Gostei + 0

30/03/2007

Ullrich

ow dmenin, valeu pela dica.

aqui esta a função:

Trasforma as horas em minutos.

function HoParaMi(Tempo: String): Integer;
var
Hora, Minuto,Minutos : String;
begin
Hora := Tempo;
Minuto := Tempo;
Delete(Hora,3,6);
Delete(Minuto,1,3);
Minutos := Minuto;
Delete(Minutos,3,3);
HoParaMi := (StrToInt(Hora)*60)+StrToInt(Minutos);
end;

ex uso:

var
Tempo : string;
begin

Tempo := HoParaMi(timetostr(Time));

usando esta função fiz um laço na tabela e calculei o total de horas.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar