[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 594: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 650: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1110: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1110: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1110: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 494: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 113: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5277: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5277: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5277: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
Fórum Xmaker • Cálculo de HORAS
Página 1 de 2

Cálculo de HORAS

Enviado: Março 13th, 2011, 3:37 pm
por wkarts
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

Re: Cálculo de HORAS

Enviado: Março 14th, 2011, 3:56 pm
por Gustavo
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;

Re: Cálculo de HORAS

Enviado: Março 14th, 2011, 4:22 pm
por wkarts
OK, porém essa função eu aplico dentro do campo calculado?

Re: Cálculo de HORAS

Enviado: Março 14th, 2011, 4:30 pm
por Suporte
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

Re: Cálculo de HORAS

Enviado: Março 17th, 2011, 4:11 pm
por Gustavo
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.

Re: Cálculo de HORAS

Enviado: Abril 5th, 2011, 4:53 pm
por wkarts
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

Re: Cálculo de HORAS

Enviado: Abril 7th, 2011, 3:37 pm
por Gustavo
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.

Re: Cálculo de HORAS

Enviado: Abril 12th, 2011, 9:03 am
por wkarts
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

Re: Cálculo de HORAS

Enviado: Abril 12th, 2011, 10:52 am
por Gustavo
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.

Re: Cálculo de HORAS

Enviado: Abril 14th, 2011, 10:17 am
por wkarts