calcular hora*R$??
e ae galera, blz??!!
procurei aqui no forum, mas n conssigui fazer o meu (sou novo em programacao( e to comecando a achar q sou burro em matematica(rsrs))).
tenho no meu form, tres edits
edit1 = hora entrada (q ele coloca o valor da hora q o form foi criado usando ´now´ )
edit2 = hora saida (coloca automatico quando eu clico no botao ´calcular´)
edit3 = onde eu quero digitar o valor/hora.
eu n conssigo fazer no label, aparecer o valor q custara p o cliente, n consigo fazer o calculo de (horaEntrada - horaSaida) * valor/hora
como eu faco, oq tem q ser string, oq n tem q ser?!!?
pra fazer horaEntrada - hora Saida to usando um exemplo do arq de dicas do delphi q e esse aqui:
var
hora1: TDateTime;
hora2: TDateTime;
total: TDateTime;
begin
hora1 := StrToTime(Edit1.Text);
hora2 := StrToTime(Edit2.Text);
total := Hora2 - Hora1;
Label1.Caption := FormatDateTime(´hh:nn:ss´,total);
end;
ate ai blz...pra fazer o calculo d entrada e saida, mas n sei como faco pra q seja multiplicado o valor q eu digito no edit* a quantidade de horas
obrigado desde ja
aquele abraco
viper0!!! :evil:
procurei aqui no forum, mas n conssigui fazer o meu (sou novo em programacao( e to comecando a achar q sou burro em matematica(rsrs))).
tenho no meu form, tres edits
edit1 = hora entrada (q ele coloca o valor da hora q o form foi criado usando ´now´ )
edit2 = hora saida (coloca automatico quando eu clico no botao ´calcular´)
edit3 = onde eu quero digitar o valor/hora.
eu n conssigo fazer no label, aparecer o valor q custara p o cliente, n consigo fazer o calculo de (horaEntrada - horaSaida) * valor/hora
como eu faco, oq tem q ser string, oq n tem q ser?!!?
pra fazer horaEntrada - hora Saida to usando um exemplo do arq de dicas do delphi q e esse aqui:
var
hora1: TDateTime;
hora2: TDateTime;
total: TDateTime;
begin
hora1 := StrToTime(Edit1.Text);
hora2 := StrToTime(Edit2.Text);
total := Hora2 - Hora1;
Label1.Caption := FormatDateTime(´hh:nn:ss´,total);
end;
ate ai blz...pra fazer o calculo d entrada e saida, mas n sei como faco pra q seja multiplicado o valor q eu digito no edit* a quantidade de horas
obrigado desde ja
aquele abraco
viper0!!! :evil:
Viper0
Curtidas 0
Respostas
Marconi
21/10/2003
viper0
Eu tenho uma rotina que faz a somatória de horas trabalhadas durante varios dias em uma Ordem de Serviço.
Quando ela é acionada, a tabela tabela Trabalhos já está filtrada para conter dados somente de determinada Ordem de Serviço.
Nos campos da tabela ´fim´ e ´inicio´ as horas entram no formato ´hh:mm:ss´.
Como voce vai ver eu utilizo a função DecodeTime para separar horas,
minutos e segundos em valores tipo Word (inteiros) para ficar mais fácil de calcular. Após o cálculo, o resultado é reconvertido para Time e é passado o total para um campo da tabela OS.
Para o seu caso voce vai precisar são dos valores:
resultado:= (hour+(min/60))*StrToFloat(edit3.text);
procedure TfControle.TotalizaHoras;
var Hour, Min, Sec, MSec :word; totH,totM: Integer;
begin
totH:=0; totM:=0;
Trabalhos.first;
while not Trabalhos.eof do begin
if (Trabalhos[´fim´]<>null) and (Trabalhos[´inicio´]<>null) then begin
DecodeTime(Trabalhos[´fim´],Hour,Min,Sec,Msec);
totH:=totH+Hour;
totM:=totM+Min;
DecodeTime(Trabalhos[´inicio´],Hour,Min,Sec,Msec);
totH:=totH-Hour;
totM:=totM-Min;
end;
Trabalhos.next;
end;
while totM>=60 do begin
inc(totH);
totM:=totM-60;
end;
while totM<0 do begin
dec(totH);
totM:=totM+60;
end;
os.edit;
os[´TotalHoras´]:=IntToStr(totH)+´:´+Tcam.Strzero(totM,2);
os.post;
end;
Espero ter ajudado
Marconi
Eu tenho uma rotina que faz a somatória de horas trabalhadas durante varios dias em uma Ordem de Serviço.
Quando ela é acionada, a tabela tabela Trabalhos já está filtrada para conter dados somente de determinada Ordem de Serviço.
Nos campos da tabela ´fim´ e ´inicio´ as horas entram no formato ´hh:mm:ss´.
Como voce vai ver eu utilizo a função DecodeTime para separar horas,
minutos e segundos em valores tipo Word (inteiros) para ficar mais fácil de calcular. Após o cálculo, o resultado é reconvertido para Time e é passado o total para um campo da tabela OS.
Para o seu caso voce vai precisar são dos valores:
resultado:= (hour+(min/60))*StrToFloat(edit3.text);
procedure TfControle.TotalizaHoras;
var Hour, Min, Sec, MSec :word; totH,totM: Integer;
begin
totH:=0; totM:=0;
Trabalhos.first;
while not Trabalhos.eof do begin
if (Trabalhos[´fim´]<>null) and (Trabalhos[´inicio´]<>null) then begin
DecodeTime(Trabalhos[´fim´],Hour,Min,Sec,Msec);
totH:=totH+Hour;
totM:=totM+Min;
DecodeTime(Trabalhos[´inicio´],Hour,Min,Sec,Msec);
totH:=totH-Hour;
totM:=totM-Min;
end;
Trabalhos.next;
end;
while totM>=60 do begin
inc(totH);
totM:=totM-60;
end;
while totM<0 do begin
dec(totH);
totM:=totM+60;
end;
os.edit;
os[´TotalHoras´]:=IntToStr(totH)+´:´+Tcam.Strzero(totM,2);
os.post;
end;
Espero ter ajudado
Marconi
GOSTEI 0
Marconi
21/10/2003
Completando
substitua a linha
os[´TotalHoras´]:=IntToStr(totH)+´:´+Tcam.Strzero(totM,2);
por
os[´TotalHoras´]:=IntToStr(totH)+´:´+Strzero(totM,2);
abaixo a função recriada do Clipper StrZero, que coloca zeros a esquerda, se necessário, para completar o número como string;
Function StrZero(valor,tam:Int64):string;
begin
result:=IntToStr(valor);
if length(result)> tam then result:=StringOfChar(´*´,tam);
while length(result)<tam do result:=´0´+result;
end;
Marconi
substitua a linha
os[´TotalHoras´]:=IntToStr(totH)+´:´+Tcam.Strzero(totM,2);
por
os[´TotalHoras´]:=IntToStr(totH)+´:´+Strzero(totM,2);
abaixo a função recriada do Clipper StrZero, que coloca zeros a esquerda, se necessário, para completar o número como string;
Function StrZero(valor,tam:Int64):string;
begin
result:=IntToStr(valor);
if length(result)> tam then result:=StringOfChar(´*´,tam);
while length(result)<tam do result:=´0´+result;
end;
Marconi
GOSTEI 0