Ref. Calculo de horas
Ola Galera, estou criando um programa para uma empresa de motoboys, e gostaria de saber como faço para calcular o periodo de horas, hora inicial do servico até a hora final, o total das hopras vai ter um custo.
Alguem poderia me ajudar como faço isso, se conhecerem algum exemplo de programa na rede por favor me indiquem.
Grato
Alguem poderia me ajudar como faço isso, se conhecerem algum exemplo de programa na rede por favor me indiquem.
Grato
Ricardo.cabral
Curtidas 0
Respostas
Djjunior
03/05/2004
basicamente é horafinal - horainicial;
o problema é se essa soma der mais de 23:59:59 ai ele ´volta´ a 0:00:00, dê uma pesquisada no forum que isso já foi discutido
o problema é se essa soma der mais de 23:59:59 ai ele ´volta´ a 0:00:00, dê uma pesquisada no forum que isso já foi discutido
GOSTEI 0
Tinorj
03/05/2004
Para o exemplo abaixo, use a seguinte estrutura para o Form:
Ex:
TForm1 = class(TForm)
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Panel1: TPanel;
Ex:
{No caso de vc usar o Delphi6, use a unit DateUtils e ignore as função HourOf, MinuteOf e SecondOf abaixo listadas}
function HourOf(const AValue: TDateTime): Word;
var
LMinute, LSecond, LMilliSecond: Word;
begin
DecodeTime(AValue, Result, LMinute, LSecond, LMilliSecond);
end;
function MinuteOf(const AValue: TDateTime): Word;
var
LHour, LSecond, LMilliSecond: Word;
begin
DecodeTime(AValue, LHour, Result, LSecond, LMilliSecond);
end;
function SecondOf(const AValue: TDateTime): Word;
var
LHour, LMinute, LMilliSecond: Word;
begin
DecodeTime(AValue, LHour, LMinute, Result, LMilliSecond);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
HoraI, HoraF, HorasTrabalhadas: TTime;
begin
HoraI := StrToTime(MaskEdit1.Text);
HoraF := StrToTime(MaskEdit2.Text);
HorasTrabalhadas := HoraF - HoraI;
Panel1.Caption := Format(´Total de Horas Trabalhadas: ¬d:¬d:¬d´,
[HourOf(HorasTrabalhadas),
MinuteOf(HorasTrabalhadas),
SecondOf(HorasTrabalhadas)]);
end;GOSTEI 0
Rogerio_amorim
03/05/2004
Se vc estiver trabalhando com campos que permitam armazenar data e hora no mesmo campo, tipo timestamp do Interbase.
Tente isto:
adicione um campo calculado na sua table ou query editável e no evento CalcFields do componente coloque:
ex: IBQUERY2.FieldByName(´TEMPOA´).VALUE := (IBQUERY2.FieldByName(´DATA_SAIDA´).value - IBQUERY2.FieldByName(´DATA_ENTRADA´).value) * 24;
e vc mostraria o resultado em um DBtext, isso em horas, claro !
Rogério Amorim
Tente isto:
adicione um campo calculado na sua table ou query editável e no evento CalcFields do componente coloque:
ex: IBQUERY2.FieldByName(´TEMPOA´).VALUE := (IBQUERY2.FieldByName(´DATA_SAIDA´).value - IBQUERY2.FieldByName(´DATA_ENTRADA´).value) * 24;
e vc mostraria o resultado em um DBtext, isso em horas, claro !
Rogério Amorim
GOSTEI 0