Fração de horas ( estacionamento )
Estou criando um sistema e travei no calculo do tempo que o cliente ficou no estabelecimento.
tenho um tabela de preço por hora que tem
1hr = 20,00
2hr = 25,00
3hr = 30,00
noite = 40,00
eu quero que verifique a entrada bata com a saida e verificar se o valor é correspondente a 1hr, 2 ou 3 horas.
estou usando esse código, ele busca a hora certinha, o valor, mas na hora de jogar o resultado ele pula para o fim.
var
TempoTotal,
dHoraIni,
dHoraFim : TTime;
PrecoUma_Hora
PrecoDuas_Hora : Double;
begin
//Hora Inicial
dHoraIni := StrToTime(Fmenu.labHora.Text);
//Hora Final
dHoraFim := now;
//Tempo total que ficou no estabelecimento, Hora Inicial - menos Hora Final
TempoTotal := dHoraFim - dHoraIni;
//Encontrar Valor que irá pagar pelo tempo que ficou
PrecoUma_Hora := Modelconexao.tb_precoUMA_HORA.AsCurrency;
PrecoDuas_Hora := Modelconexao.tb_precoDUAS_HORA.AsCurrency;
//Se o tempo total for menor igual a 1hr ele me dá o preço de 1hr
if (TempoTotal <= StrToTime('01:00:00')) then
begin
lblPrecoHora.Text := PrecoUma_Hora;
end
else
begin
//Se não for menor ou igual me deixa o campo com está
lblPrecoHora.Text := '0,00';
begin
//Se o tempo total for maior a 1hr e menor que 2hr, me dá o preço de 2hr
if (TempoTotal > StrToTime('01:00:00')) and (TempoTotal <= StrToTime('02:00:00')) then
begin
lblPrecoHora.Text := PrecoDuas_Hora
end
else
begin
lblPrecoHora.Text := '0,00';
end;
end;
end;
end;
Tem alguém possa me ajudar?!
tenho um tabela de preço por hora que tem
1hr = 20,00
2hr = 25,00
3hr = 30,00
noite = 40,00
eu quero que verifique a entrada bata com a saida e verificar se o valor é correspondente a 1hr, 2 ou 3 horas.
estou usando esse código, ele busca a hora certinha, o valor, mas na hora de jogar o resultado ele pula para o fim.
var
TempoTotal,
dHoraIni,
dHoraFim : TTime;
PrecoUma_Hora
PrecoDuas_Hora : Double;
begin
//Hora Inicial
dHoraIni := StrToTime(Fmenu.labHora.Text);
//Hora Final
dHoraFim := now;
//Tempo total que ficou no estabelecimento, Hora Inicial - menos Hora Final
TempoTotal := dHoraFim - dHoraIni;
//Encontrar Valor que irá pagar pelo tempo que ficou
PrecoUma_Hora := Modelconexao.tb_precoUMA_HORA.AsCurrency;
PrecoDuas_Hora := Modelconexao.tb_precoDUAS_HORA.AsCurrency;
//Se o tempo total for menor igual a 1hr ele me dá o preço de 1hr
if (TempoTotal <= StrToTime('01:00:00')) then
begin
lblPrecoHora.Text := PrecoUma_Hora;
end
else
begin
//Se não for menor ou igual me deixa o campo com está
lblPrecoHora.Text := '0,00';
begin
//Se o tempo total for maior a 1hr e menor que 2hr, me dá o preço de 2hr
if (TempoTotal > StrToTime('01:00:00')) and (TempoTotal <= StrToTime('02:00:00')) then
begin
lblPrecoHora.Text := PrecoDuas_Hora
end
else
begin
lblPrecoHora.Text := '0,00';
end;
end;
end;
end;
Tem alguém possa me ajudar?!
Gilson
Curtidas 0
Respostas
Emerson Nascimento
11/04/2019
Veja se assim funciona:
var TempoTotal, dHoraIni, dHoraFim : TTime; PrecoUma_Hora, PrecoDuas_Hora, PrecoTres_Hora : Double; begin //Hora Inicial dHoraIni := StrToTime(Fmenu.labHora.Text); //Hora Final dHoraFim := now; //Tempo total que ficou no estabelecimento, Hora Inicial - menos Hora Final TempoTotal := dHoraFim - dHoraIni; // inicialmente, atribui zero para o valor cobrado lblPrecoHora.Text := '0,00'; //Encontrar Valor que irá pagar pelo tempo que ficou PrecoUma_Hora := Modelconexao.tb_precoUMA_HORA.AsCurrency; PrecoDuas_Hora := Modelconexao.tb_precoDUAS_HORA.AsCurrency; PrecoTres_Hora := Modelconexao.tb_precoTRES_HORA.AsCurrency; if (TempoTotal <= StrToTime('01:00:00')) then //Se o tempo total for menor ou igual a 1hr ele me dá o preço de 1hr lblPrecoHora.Text := PrecoUma_Hora else if (TempoTotal <= StrToTime('02:00:00')) then //Se o tempo total for maior que 1hr e menor que 2hr, me dá o preço de 2hr lblPrecoHora.Text := PrecoDuas_Hora else if (TempoTotal <= StrToTime('03:00:00')) then //Se o tempo total for maior que 2hr e menor que 3hr, me dá o preço de 3hr lblPrecoHora.Text := PrecoTres_Hora; end;
GOSTEI 0
Gilson
11/04/2019
Veja se assim funciona:
var TempoTotal, dHoraIni, dHoraFim : TTime; PrecoUma_Hora, PrecoDuas_Hora, PrecoTres_Hora : Double; begin //Hora Inicial dHoraIni := StrToTime(Fmenu.labHora.Text); //Hora Final dHoraFim := now; //Tempo total que ficou no estabelecimento, Hora Inicial - menos Hora Final TempoTotal := dHoraFim - dHoraIni; // inicialmente, atribui zero para o valor cobrado lblPrecoHora.Text := '0,00'; //Encontrar Valor que irá pagar pelo tempo que ficou PrecoUma_Hora := Modelconexao.tb_precoUMA_HORA.AsCurrency; PrecoDuas_Hora := Modelconexao.tb_precoDUAS_HORA.AsCurrency; PrecoTres_Hora := Modelconexao.tb_precoTRES_HORA.AsCurrency; if (TempoTotal <= StrToTime('01:00:00')) then //Se o tempo total for menor ou igual a 1hr ele me dá o preço de 1hr lblPrecoHora.Text := PrecoUma_Hora else if (TempoTotal <= StrToTime('02:00:00')) then //Se o tempo total for maior que 1hr e menor que 2hr, me dá o preço de 2hr lblPrecoHora.Text := PrecoDuas_Hora else if (TempoTotal <= StrToTime('03:00:00')) then //Se o tempo total for maior que 2hr e menor que 3hr, me dá o preço de 3hr lblPrecoHora.Text := PrecoTres_Hora; end;
Vou testar agora, mano sei que não tem nada ver com esse post, mas você entende de enviar anexo pelo delphi 10.3, porque tenho todo código, adicionei os componentes, habilitei o gmail, mas quando ele roda, tenta conectar e vai direto pra disconnect.
Se souber me ajuda!
segue meu whats 79 99108-2648 Email gilson.oliver13@gmail.com
GOSTEI 0
Gilson
11/04/2019
Veja se assim funciona:
var TempoTotal, dHoraIni, dHoraFim : TTime; PrecoUma_Hora, PrecoDuas_Hora, PrecoTres_Hora : Double; begin //Hora Inicial dHoraIni := StrToTime(Fmenu.labHora.Text); //Hora Final dHoraFim := now; //Tempo total que ficou no estabelecimento, Hora Inicial - menos Hora Final TempoTotal := dHoraFim - dHoraIni; // inicialmente, atribui zero para o valor cobrado lblPrecoHora.Text := '0,00'; //Encontrar Valor que irá pagar pelo tempo que ficou PrecoUma_Hora := Modelconexao.tb_precoUMA_HORA.AsCurrency; PrecoDuas_Hora := Modelconexao.tb_precoDUAS_HORA.AsCurrency; PrecoTres_Hora := Modelconexao.tb_precoTRES_HORA.AsCurrency; if (TempoTotal <= StrToTime('01:00:00')) then //Se o tempo total for menor ou igual a 1hr ele me dá o preço de 1hr lblPrecoHora.Text := PrecoUma_Hora else if (TempoTotal <= StrToTime('02:00:00')) then //Se o tempo total for maior que 1hr e menor que 2hr, me dá o preço de 2hr lblPrecoHora.Text := PrecoDuas_Hora else if (TempoTotal <= StrToTime('03:00:00')) then //Se o tempo total for maior que 2hr e menor que 3hr, me dá o preço de 3hr lblPrecoHora.Text := PrecoTres_Hora; end;
Boa tarde, cara não pegou!
GOSTEI 0
Emerson Nascimento
11/04/2019
Fiz assim e funcionou:
var TempoTotal, dHoraIni, dHoraFim : TTime; PrecoUma_Hora, PrecoDuas_Hora, PrecoTres_Hora : Double; begin //Hora Inicial dHoraIni := StrToTime(Edit1.Text); //Hora Final dHoraFim := Time; //Tempo total que ficou no estabelecimento, Hora Inicial - menos Hora Final TempoTotal := dHoraFim - dHoraIni; // inicialmente, atribui zero para o valor cobrado lblPrecoHora.Caption := '0,00'; //Encontrar Valor que irá pagar pelo tempo que ficou PrecoUma_Hora := 20;//Modelconexao.tb_precoUMA_HORA.AsCurrency; PrecoDuas_Hora := 25;//Modelconexao.tb_precoDUAS_HORA.AsCurrency; PrecoTres_Hora := 30;//Modelconexao.tb_precoTRES_HORA.AsCurrency; if (TempoTotal > StrToTime('02:00:00')) then //Se o tempo total for maior que 2hr e menor que 3hr, me dá o preço de 3hr lblPrecoHora.Caption := FormatFloat(',#0.00',PrecoTres_Hora) else if (TempoTotal > StrToTime('01:00:00')) then //Se o tempo total for maior que 1hr e menor que 2hr, me dá o preço de 2hr lblPrecoHora.Caption := FormatFloat(',#0.00',PrecoDuas_Hora) else //Se o tempo total for menor ou igual a 1hr ele me dá o preço de 1hr lblPrecoHora.Caption := FormatFloat(',#0.00',PrecoUma_Hora); end;
GOSTEI 0
Gilson
11/04/2019
Fiz assim e funcionou:
var TempoTotal, dHoraIni, dHoraFim : TTime; PrecoUma_Hora, PrecoDuas_Hora, PrecoTres_Hora : Double; begin //Hora Inicial dHoraIni := StrToTime(Edit1.Text); //Hora Final dHoraFim := Time; //Tempo total que ficou no estabelecimento, Hora Inicial - menos Hora Final TempoTotal := dHoraFim - dHoraIni; // inicialmente, atribui zero para o valor cobrado lblPrecoHora.Caption := '0,00'; //Encontrar Valor que irá pagar pelo tempo que ficou PrecoUma_Hora := 20;//Modelconexao.tb_precoUMA_HORA.AsCurrency; PrecoDuas_Hora := 25;//Modelconexao.tb_precoDUAS_HORA.AsCurrency; PrecoTres_Hora := 30;//Modelconexao.tb_precoTRES_HORA.AsCurrency; if (TempoTotal > StrToTime('02:00:00')) then //Se o tempo total for maior que 2hr e menor que 3hr, me dá o preço de 3hr lblPrecoHora.Caption := FormatFloat(',#0.00',PrecoTres_Hora) else if (TempoTotal > StrToTime('01:00:00')) then //Se o tempo total for maior que 1hr e menor que 2hr, me dá o preço de 2hr lblPrecoHora.Caption := FormatFloat(',#0.00',PrecoDuas_Hora) else //Se o tempo total for menor ou igual a 1hr ele me dá o preço de 1hr lblPrecoHora.Caption := FormatFloat(',#0.00',PrecoUma_Hora); end;
O mano obrigado por me responder, mas dessa formar ai não pega, mas te tanto pesquisar acabei achando uma solução, diminuir hora inicial com hora final, depois usei decodeTime pra quebrar a hora e depois transformei em minutos, ai funcionou o > e <, não entendo o porquê mas ele só pegou quando tranaformei tudo em minutos e deixei como número inteiro, em time ele não pega!
Mas obrigado novamente, sim ainda estou com aquela dúvida sobre enviar anexo pdf pelo e-mail, já usei vários códigos e nenhum pegou!
GOSTEI 0