Olá estou com seguinte dúvida:
estou desemvolvendo um sistema para moteis e não sei como efetuar um determinado cálculo
seguinte:
tenho a tabela onde possuo os campos que informo data e hóra de entrada e data e hóra de saída
quero saber o tempo entre um e outro e quero pegar esse tempo e multiplica pelo valor da hóra e
também que quero determinar uma tolerância para ser calculada a prixima hora ex:
entrada 17/01/2011 16:00:00
saída 17/01/2011 16:00:00
resultado = 1:00 hs
agora se tenho tolerância de 15min
entrada 17/01/2011 16:00:00
saída 17/01/2011 16:14:59
resultado = 1:00 hs
agora se atinge a tolerância de 15min
e mutiplicar o resultado pelo valor da hora
entrada 17/01/2011 16:00:00
saída 17/01/2011 16:15:00
resultado = 2:00 hs
se alguém puder ajudar
Cálculo de HORAS
-
- Mensagens: 244
- Registrado em: Dezembro 22nd, 2010, 1:05 am [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Cálculo de HORAS
Olá,
existe uma função que retorna a diferença entre duas horas:
function DifHora(Inicio,Fim : String):String;
{Retorna a diferença entre duas horas}
var
FIni,FFim : TDateTime;
begin
Fini := StrTotime(Inicio);
FFim := StrToTime(Fim);
If (Inicio > Fim) then
begin
Result := TimeToStr((StrTotime('23:59:59')-Fini)+FFim)
end
else
begin
Result := TimeToStr(FFim-Fini);
end;
end;
----------------------------------------------
O usuário Gilberto já havia usado outras rotinas de cáculos com horas que são muito interessantes, e podem estar lhe ajudando:
//Retorna a diferença entre duas horas
function DIFTEMP(hora_i,hora_f: String): String; // Formato 99-99-99
//*********** transforma hora em minutos *************//
function HoraMinuto(valor : String):Integer;
//*********** transforma minutos em horas *************//
function MinutoHora(valor : integer):String;
//*********** transforma minutos em horas *************//
function MinutoHor(valor : integer):String;
//*********** transforma horas em centesimos *************//
function HorasCentesimo(hh,mm,ss : integer):Double;
--------------------------------------------------------------------------
function DifTempo(hora_i, hora_f: TTime): String;
var
totsegdia, hora1, hora2, final: Integer;
resultado: String;
function Segundos(tempo,inicio: String): Integer;
var
Horas, Minutos, s1, s2, Segs, Final: Integer;
begin
if inicio <> '' then
begin
Horas:=StrToInt(Copy(Tempo,01,2))-StrToInt(Copy(Inicio,1,2));
Minutos:=StrToInt(Copy(Tempo,4,2))-StrToInt(Copy(Inicio,4,2));
s1:=StrToInt(Copy(Tempo,7,2));
s2:=StrToInt(Copy(Inicio,7,2));
if s2<=s1 then
segs:=S1-S2
else
segs :=S1+(60-S2);
tempo:=FormatFloat('00',horas) + ':' + FormatFloat('00',minutos) + ':' + FormatFloat('00',segs);
end;
final:= StrToInt(Copy(tempo,01,2))*3600 + StrToInt(Copy(tempo,4,2))*60 +
StrToInt(Copy(tempo,7,2));
Segundos := final;
end;
begin
totsegdia:=86400; // total de segundos de 1 dia
hora1:=segundos(TimeToStr(hora_i),'');
hora2:=segundos(TimeToStr(hora_f),'');
if hora2<hora1 then // mudou de dia
hora2:=hora2+totsegdia;
final:=hora2-hora1;
Resultado := FormatFloat('00',Int((final div 3600) mod 24)) + ':' +
FormatFloat('00',Int((final div 60) mod 60)) +':' +
FormatFloat('00',Int(final mod 60));
DifTempo := Resultado;
end;
//*********** transforma hora em minutos *************//
function HoraMinuto(valor : String):Integer;
var minuto : integer;
begin
minuto:=strtoint(copy(valor,1,pos(':',valor)-1))*60;
minuto:=minuto+strtoint(copy(valor,pos(':',valor)+1,2));
result := minuto;
end;
//*********** transforma minutos em horas *************//
function MinutoHora(valor : integer):String;
var hora,minuto : integer;
begin
hora:=valor div 60;
minuto:=valor mod 60;
result := formatfloat('00',hora)+':'+formatfloat('00',minuto);
end;
//*********** transforma minutos em horas *************//
function MinutoHor(valor : integer):String;
var hora,minuto : integer;
begin
hora:=valor div 60;
minuto:=valor mod 60;
result := formatfloat('0000',hora)+':'+formatfloat('00',minuto);
end;
//*********** transforma horas em centesimos *************//
function HorasCentesimo(hh,mm,ss : integer):Double;
begin
result := ( ( (hh * 3600) + (MM * 60) + SS ) / 3600);
end;
existe uma função que retorna a diferença entre duas horas:
function DifHora(Inicio,Fim : String):String;
{Retorna a diferença entre duas horas}
var
FIni,FFim : TDateTime;
begin
Fini := StrTotime(Inicio);
FFim := StrToTime(Fim);
If (Inicio > Fim) then
begin
Result := TimeToStr((StrTotime('23:59:59')-Fini)+FFim)
end
else
begin
Result := TimeToStr(FFim-Fini);
end;
end;
----------------------------------------------
O usuário Gilberto já havia usado outras rotinas de cáculos com horas que são muito interessantes, e podem estar lhe ajudando:
//Retorna a diferença entre duas horas
function DIFTEMP(hora_i,hora_f: String): String; // Formato 99-99-99
//*********** transforma hora em minutos *************//
function HoraMinuto(valor : String):Integer;
//*********** transforma minutos em horas *************//
function MinutoHora(valor : integer):String;
//*********** transforma minutos em horas *************//
function MinutoHor(valor : integer):String;
//*********** transforma horas em centesimos *************//
function HorasCentesimo(hh,mm,ss : integer):Double;
--------------------------------------------------------------------------
function DifTempo(hora_i, hora_f: TTime): String;
var
totsegdia, hora1, hora2, final: Integer;
resultado: String;
function Segundos(tempo,inicio: String): Integer;
var
Horas, Minutos, s1, s2, Segs, Final: Integer;
begin
if inicio <> '' then
begin
Horas:=StrToInt(Copy(Tempo,01,2))-StrToInt(Copy(Inicio,1,2));
Minutos:=StrToInt(Copy(Tempo,4,2))-StrToInt(Copy(Inicio,4,2));
s1:=StrToInt(Copy(Tempo,7,2));
s2:=StrToInt(Copy(Inicio,7,2));
if s2<=s1 then
segs:=S1-S2
else
segs :=S1+(60-S2);
tempo:=FormatFloat('00',horas) + ':' + FormatFloat('00',minutos) + ':' + FormatFloat('00',segs);
end;
final:= StrToInt(Copy(tempo,01,2))*3600 + StrToInt(Copy(tempo,4,2))*60 +
StrToInt(Copy(tempo,7,2));
Segundos := final;
end;
begin
totsegdia:=86400; // total de segundos de 1 dia
hora1:=segundos(TimeToStr(hora_i),'');
hora2:=segundos(TimeToStr(hora_f),'');
if hora2<hora1 then // mudou de dia
hora2:=hora2+totsegdia;
final:=hora2-hora1;
Resultado := FormatFloat('00',Int((final div 3600) mod 24)) + ':' +
FormatFloat('00',Int((final div 60) mod 60)) +':' +
FormatFloat('00',Int(final mod 60));
DifTempo := Resultado;
end;
//*********** transforma hora em minutos *************//
function HoraMinuto(valor : String):Integer;
var minuto : integer;
begin
minuto:=strtoint(copy(valor,1,pos(':',valor)-1))*60;
minuto:=minuto+strtoint(copy(valor,pos(':',valor)+1,2));
result := minuto;
end;
//*********** transforma minutos em horas *************//
function MinutoHora(valor : integer):String;
var hora,minuto : integer;
begin
hora:=valor div 60;
minuto:=valor mod 60;
result := formatfloat('00',hora)+':'+formatfloat('00',minuto);
end;
//*********** transforma minutos em horas *************//
function MinutoHor(valor : integer):String;
var hora,minuto : integer;
begin
hora:=valor div 60;
minuto:=valor mod 60;
result := formatfloat('0000',hora)+':'+formatfloat('00',minuto);
end;
//*********** transforma horas em centesimos *************//
function HorasCentesimo(hh,mm,ss : integer):Double;
begin
result := ( ( (hh * 3600) + (MM * 60) + SS ) / 3600);
end;
Att,
Gustavo Barreto
Gustavo Barreto
-
- Mensagens: 17
- Registrado em: Janeiro 30th, 2011, 3:34 pm [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Cálculo de HORAS
OK, porém essa função eu aplico dentro do campo calculado?
-
- Site Admin
- Mensagens: 145
- Registrado em: Dezembro 20th, 2010, 10:05 pm [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Cálculo de HORAS
Olá,
Sim, Você pode estar usando elas em campo calculado.
Para essas funções estarem disponíveis você poderá acrescentá-las dentro de Rotinas.pas e invocá-las no campo
calculado, assim poderá mostrar os Totais em telas e relatórios. (verifique como fazer através das outras funções que você já encontrará lá)
Att,
Suporte - Equipe Xmaker
________________________
http://www.xmaker.com.br
Sim, Você pode estar usando elas em campo calculado.
Para essas funções estarem disponíveis você poderá acrescentá-las dentro de Rotinas.pas e invocá-las no campo
calculado, assim poderá mostrar os Totais em telas e relatórios. (verifique como fazer através das outras funções que você já encontrará lá)
Att,
Suporte - Equipe Xmaker
________________________
http://www.xmaker.com.br
-
- Mensagens: 244
- Registrado em: Dezembro 22nd, 2010, 1:05 am [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Cálculo de HORAS
Está em anexo um projeto exemplo que mostra a diferença entre uma hora inicial e final.
Em Rotinas.pas se encontra a função DifHora que calcula a diferença entre as horas.
Na tabela CLIENTES do projeto exemplo existem 3 campos relacionados as horas:
Hora inicial, hora final e o campo calculado que contém o cálculo que chama a função para calcular a diferença entre os campos hora inicial e hora final.
Em Rotinas.pas se encontra a função DifHora que calcula a diferença entre as horas.
Na tabela CLIENTES do projeto exemplo existem 3 campos relacionados as horas:
Hora inicial, hora final e o campo calculado que contém o cálculo que chama a função para calcular a diferença entre os campos hora inicial e hora final.
Você não está autorizado a ver ou baixar esse anexo.
Att,
Gustavo Barreto
Gustavo Barreto
-
- Mensagens: 17
- Registrado em: Janeiro 30th, 2011, 3:34 pm [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Cálculo de HORAS
ok
Consegui efetuar o cálculo da Hora, porém, de saber como fazer para transformar a hora (resultado) em dinheiro
Tipo e:
Entrada: 10:45:00
Saída: 12:45:00
Total: 02:00:00
Valor Hora: R$15,00
Total a pagar: 30,00
Não estou conseguindo fazer isso acontercer.
Desde já agradeço a colaboração
Consegui efetuar o cálculo da Hora, porém, de saber como fazer para transformar a hora (resultado) em dinheiro
Tipo e:
Entrada: 10:45:00
Saída: 12:45:00
Total: 02:00:00
Valor Hora: R$15,00
Total a pagar: 30,00
Não estou conseguindo fazer isso acontercer.
Desde já agradeço a colaboração
-
- Mensagens: 244
- Registrado em: Dezembro 22nd, 2010, 1:05 am [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Cálculo de HORAS
Olá,
Criamos um sistema que calcula o total de horas a pagar.
Exemplo_valor_hora_pagar.JPG
No botão "Fechar Hora/Calculo Total" está a programação que calcula o total a pagar.
Para funcionar precisa converter a diferença entre horas em minutos, para depois fazer o cálculo.
Segue em anexo o sistema.
Criamos um sistema que calcula o total de horas a pagar.
Exemplo_valor_hora_pagar.JPG
No botão "Fechar Hora/Calculo Total" está a programação que calcula o total a pagar.
Para funcionar precisa converter a diferença entre horas em minutos, para depois fazer o cálculo.
Segue em anexo o sistema.
Você não está autorizado a ver ou baixar esse anexo.
Att,
Gustavo Barreto
Gustavo Barreto
-
- Mensagens: 17
- Registrado em: Janeiro 30th, 2011, 3:34 pm [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Cálculo de HORAS
OK,
muito bom, muito bom mesmo compreendi legal, porém
não grava no banco de dados.
clico no botão para calcular, clico em salvar
porém não salva na base de dados
qual será o motivo?
tem como o cálculo ser efetuado no campo alutomaticamente? Ao invés de ter que clicar no botão para fazer o cálculo?
desde já muito grato
muito bom, muito bom mesmo compreendi legal, porém
não grava no banco de dados.
clico no botão para calcular, clico em salvar
porém não salva na base de dados
qual será o motivo?
tem como o cálculo ser efetuado no campo alutomaticamente? Ao invés de ter que clicar no botão para fazer o cálculo?
desde já muito grato
-
- Mensagens: 244
- Registrado em: Dezembro 22nd, 2010, 1:05 am [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Cálculo de HORAS
Olá,
Sim tem como fazer automáticamente, basta acrescer no código, na saída da hora final(exit) informar o código do botão calcular.
Os campos não são gravados, pois não foram criados na Base, basta criar os mesmos na base e fazer a atribuição.
Sim tem como fazer automáticamente, basta acrescer no código, na saída da hora final(exit) informar o código do botão calcular.
Os campos não são gravados, pois não foram criados na Base, basta criar os mesmos na base e fazer a atribuição.
Att,
Gustavo Barreto
Gustavo Barreto
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 79 visitantes