Ir ao conteúdo
  • Cadastre-se

Ajuda com codigo calculo de horas


Vanix

Posts recomendados

Amigos Peguei este programa na net, Gostaria usar ele para mim.

o que preciso é corrigir o codigo de calculo de horas.

é o seguinte o programa calcula de uma em uma hora, eu preciso que calcule

de 30 em 30 minutos.

exemplo valor da hora = 4,00, o veiculo entrou as 12:00hs e saiu antes ou as 12:30

então o valor a ser cobrado é de 2,00.

se ele saiu apos 12:30 ou seja até as 13:00hs valor a ser cobrado 4,00.

se saiu as 13:05 valor a ser cobrado 6,00, e assim por diante, tempo sem tolerancia

minha dificuldade é mudar o codigo já feito no programa para funcionar

como expliquei.

o programa tem um botão como (novo), nele é gravado na tabela, a data de entrada e hora da entrada

e tem o botao para (fechar) que grava a hora da saida e data da saida. todos na mesma tabela

com o nome tbservico.

Apos gravar a Hora da Saida e data da saida, é executado um procedimento

de calculo da hora da entrada e hora de saida do veiculo, para obter o valor

a ser recebido.

Codigo do Procedimento.

procedure TFservico.FechaHoraExecute(Sender: TObject); 
var
HoraEnt,HoraSaida:TDateTime;
Horas:Integer;
FracaoHora,FracaoDia:Double;
begin
FracaoHora:=0;
FracaoDia:=0;
Horas:=0;

if (Modulo.TBServico['Tipo']='P') or (Modulo.TBServico['Tipo']='C')then
begin
HoraEnt:=StrToDateTime(DatetoStr(Modulo.TBServico['DataEntrada'])+' '+
TimeToStr(Modulo.TBServico['HoraEntrada']));
HoraSaida:=StrToDateTime(DateToStr(Modulo.TBServico['DataSaida'])+' '+
TimeToStr(Modulo.TBServico['HoraSaida']));

FracaoDia:=HoraSaida-HoraEnt; // não entedi
FracaoHora:=FracaoDia*24; // não entendi

while FracaoHora>Horas do> // Não entendi
Inc(Horas);
FracaoHora:=FracaoHora-Horas;

if FracaoHora>1/6 then // não entedi esta parte
Inc(Horas);

if Horas<1 then // não entendi esta parte
(Horas);

Modulo.TBServico['QtdHora']:=Horas;
end;

if Modulo.TbServico['VrHora']=null then
Modulo.TbServico['VrHora']:=(Modulo.TBServico['QtdHora'])*
(Modulo.TbValores['VrHora'])
else
Modulo.TbServico['VrHora']:=(Modulo.TBServico['QtdHora'])*
(Modulo.TbServico['VrHora']);

if Modulo.TBServico['Itens']<>null then
LavacaoExecute(Self);

end;

Amigos eu relmente não entendi o codigo em um todo, gostaria de pedir

se possivel alterar o codigo acima para que funcione de 30 em 30 minutos

e não de uma em uma hora como esta.

peço que modifiquem o codigo pois sou bem leigo, se me derem somente orientação

para modificar eu posso atrapalhar o codigo e ele pare de funcionar e dar

varios erros, para evitar isto peço a gentileza de alterar no codigo acima

o que deve ser alterado principalmente porque o codigo gira em torno das informções

de campos da tabela.

ficarei muito grato se puderem me ajudar, quero usar este programa pra mim

tentando um novo negocio.

conto muito com a ajuda de vocês, desde agradeço.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...