Fórum Somando Campo Time no Quick Report #239194
23/06/2004
0
Estou postando novamente porque minha necessidade é urgente!
Será que não tem como somar campo Time no Quick Report?
Relaciono relatório com campo Time (hh:mm:ss) e preciso realizar a soma desses horários no final! Exemplo:
10:00:00
12:00:00
08:00:00
Resultado: 30:00:00
Por favor, alguém dê uma luz!?!?!?!?!?
Será que não tem como somar campo Time no Quick Report?
Relaciono relatório com campo Time (hh:mm:ss) e preciso realizar a soma desses horários no final! Exemplo:
10:00:00
12:00:00
08:00:00
Resultado: 30:00:00
Por favor, alguém dê uma luz!?!?!?!?!?
Osmar Cardoso
Curtir tópico
+ 0
Responder
Posts
23/06/2004
Luineumann
uma dica é a seguinte
1) na sua tabela crie um campo calculado que é o horário em segundos
TabTimeSeg : integer, ok?
OnCalcFields
var
hh, mm, ss, sss : word;
begin
decodedate (tabCampoHora.Value, hh, mm, ss, sss);
tabTimeSeg.Value := (hh* 3600) + (mm* 60) + ss;
end;
no relatório crie um campo
TotalHoras : integer;
inicialize ele com zero no início
a cada registro detalhe impresso faça
TotalHoras := totalHoras + tabTimeSeg.Value;
na hora de imprimir o total use um qrlabel para colocar o total
no beforeprint da linha de total coloque
var
hh, mm, ss : integer;
begin
hh := 0;
mm := 0;
ss := TotalHoras;
while ss > 3559
do begin
hh := hh + 1;
ss := ss - 3600;
end;
while mm > 359
do begin
mm := mm + 1;
ss := ss - 360;
end;
qrlabelTotal.Caption := formatdatetime(´hh:mm:ss´,
encodedate(hh,mm,ss,0);
end;
1) na sua tabela crie um campo calculado que é o horário em segundos
TabTimeSeg : integer, ok?
OnCalcFields
var
hh, mm, ss, sss : word;
begin
decodedate (tabCampoHora.Value, hh, mm, ss, sss);
tabTimeSeg.Value := (hh* 3600) + (mm* 60) + ss;
end;
no relatório crie um campo
TotalHoras : integer;
inicialize ele com zero no início
a cada registro detalhe impresso faça
TotalHoras := totalHoras + tabTimeSeg.Value;
na hora de imprimir o total use um qrlabel para colocar o total
no beforeprint da linha de total coloque
var
hh, mm, ss : integer;
begin
hh := 0;
mm := 0;
ss := TotalHoras;
while ss > 3559
do begin
hh := hh + 1;
ss := ss - 3600;
end;
while mm > 359
do begin
mm := mm + 1;
ss := ss - 360;
end;
qrlabelTotal.Caption := formatdatetime(´hh:mm:ss´,
encodedate(hh,mm,ss,0);
end;
Responder
Gostei + 0
23/06/2004
Luineumann
Corrigindo o final
não use o formardatetime que vai dar pau
use assim
qrlabeltotal.caption := formatfloat(´00´, hh)
+ ´:´
+ formatfloat(´00´, mm)
+ ´:´
+ formatfloat(´00´, ss);
não use o formardatetime que vai dar pau
use assim
qrlabeltotal.caption := formatfloat(´00´, hh)
+ ´:´
+ formatfloat(´00´, mm)
+ ´:´
+ formatfloat(´00´, ss);
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)