CALCULO DE TIME X VALOR
e se forem por exemplo 5:30 isso não geraria + 0,50
SIM, 5:30=2,50
EU FIZ ASSIM UMA PARADINHA, NUM SEI SE FICOU PROFISSIONAL..RSSS, MAIS PELOS TESTES QUE FIZ, ACHO QE VAI ROLAR:
v_horas = Format(CDate(CDate(Format(Time, [Ô]SHORT TIME[Ô])) - CDate(Trim(Mid(BTN_1(Index).ToolTipText, 29, 5)))), [Ô]HH:MM[Ô])
If RS_PRAT.State = adStateOpen Then RS_PRAT.Close
RS_PRAT.Open [Ô]SELECT * FROM PRATELEIRA WHERE PRATELEIRA=[ô][Ô] & v_PrateleiraA & [Ô][ô][Ô], BD, adOpenKeyset, adLockOptimistic
ValorHora = Format(RS_PRAT([Ô]VALOR[Ô]), [Ô]##0.00[Ô])
v_Horario1 = Format(v_horas, [Ô]SHORT TIME[Ô])
Minutos = (CLng(Mid(v_Horario1, 1, 2)) * 60) + CLng(Mid(v_Horario1, 4, 2))
HorasDecimais = Minutos / 60
v_ValorPrat = Format(HorasDecimais * ValorHora, [Ô]##0.00[Ô])
If Mid(v_ValorPrat, 1, 1) = 0 And v_horas > Format(RS_TOLERANCIA([Ô]TOLERANCIA[Ô]), [Ô]SHORT TIME[Ô]) Then
v_ValorPrat = 4
ElseIf Mid(v_ValorPrat, 1, 1) = 0 And v_horas < Format(RS_TOLERANCIA([Ô]TOLERANCIA[Ô]), [Ô]SHORT TIME[Ô]) Then
v_ValorPrat = 0
ElseIf Mid(v_ValorPrat, 1, 1) = 1 Then [ô]And v_horas < Format(RS_TOLERANCIA([Ô]TOLERANCIA[Ô]), [Ô]SHORT TIME[Ô]) Then
v_ValorPrat = Format(ValorHora, [Ô]##0.00[Ô])
ElseIf Mid(v_ValorPrat, 1, 1) = 2 Then [ô]And v_horas < Format(RS_TOLERANCIA([Ô]TOLERANCIA[Ô]), [Ô]SHORT TIME[Ô]) Then
v_ValorPrat = Format(ValorHora, [Ô]##0.00[Ô])
ElseIf Mid(v_ValorPrat, 1, 1) = 3 Then [ô]And v_horas < Format(RS_TOLERANCIA([Ô]TOLERANCIA[Ô]), [Ô]SHORT TIME[Ô]) Then
v_ValorPrat = Format(ValorHora, [Ô]##0.00[Ô])
ElseIf v_ValorPrat >= [Ô]4,00[Ô] And v_ValorPrat <= [Ô]4,29[Ô] Then
v_ValorPrat = Format(ValorHora, [Ô]##0.00[Ô])
ElseIf v_ValorPrat >= [Ô]8,00[Ô] And v_ValorPrat <= [Ô]8,29[Ô] Then
v_ValorPrat = CDbl(ValorHora) + CDbl(ValorHora)
v_ValorPrat = Format(v_ValorPrat, [Ô]##0.00[Ô])
ElseIf v_ValorPrat >= [Ô]12,00[Ô] And v_ValorPrat <= [Ô]12,29[Ô] Then
v_ValorPrat = CDbl(ValorHora) + CDbl(ValorHora) + CDbl(ValorHora)
v_ValorPrat = Format(v_ValorPrat, [Ô]##0.00[Ô])
End If
v_valor1 = Replace(v_ValorPrat, [Ô].[Ô], [Ô][Ô])
v_valor11 = Replace(v_valor1, [Ô],[Ô], [Ô].[Ô])
v_ValorPrat = v_valor11
--------------------------------------------
COM CERTEZA EXISTEM MANEIRAS DE FAZER BEM MELHOR
VALEU
v_horas = Format(CDate(CDate(Format(Time, [Ô]SHORT TIME[Ô])) - CDate(Trim(Mid(BTN_1(Index).ToolTipText, 29, 5)))), [Ô]HH:MM[Ô])
If RS_PRAT.State = adStateOpen Then RS_PRAT.Close
RS_PRAT.Open [Ô]SELECT * FROM PRATELEIRA WHERE PRATELEIRA=[ô][Ô] & v_PrateleiraA & [Ô][ô][Ô], BD, adOpenKeyset, adLockOptimistic
ValorHora = Format(RS_PRAT([Ô]VALOR[Ô]), [Ô]##0.00[Ô])
v_Horario1 = Format(v_horas, [Ô]SHORT TIME[Ô])
Minutos = (CLng(Mid(v_Horario1, 1, 2)) * 60) + CLng(Mid(v_Horario1, 4, 2))
HorasDecimais = Minutos / 60
v_ValorPrat = Format(HorasDecimais * ValorHora, [Ô]##0.00[Ô])
If Mid(v_ValorPrat, 1, 1) = 0 And v_horas > Format(RS_TOLERANCIA([Ô]TOLERANCIA[Ô]), [Ô]SHORT TIME[Ô]) Then
v_ValorPrat = 4
ElseIf Mid(v_ValorPrat, 1, 1) = 0 And v_horas < Format(RS_TOLERANCIA([Ô]TOLERANCIA[Ô]), [Ô]SHORT TIME[Ô]) Then
v_ValorPrat = 0
ElseIf Mid(v_ValorPrat, 1, 1) = 1 Then [ô]And v_horas < Format(RS_TOLERANCIA([Ô]TOLERANCIA[Ô]), [Ô]SHORT TIME[Ô]) Then
v_ValorPrat = Format(ValorHora, [Ô]##0.00[Ô])
ElseIf Mid(v_ValorPrat, 1, 1) = 2 Then [ô]And v_horas < Format(RS_TOLERANCIA([Ô]TOLERANCIA[Ô]), [Ô]SHORT TIME[Ô]) Then
v_ValorPrat = Format(ValorHora, [Ô]##0.00[Ô])
ElseIf Mid(v_ValorPrat, 1, 1) = 3 Then [ô]And v_horas < Format(RS_TOLERANCIA([Ô]TOLERANCIA[Ô]), [Ô]SHORT TIME[Ô]) Then
v_ValorPrat = Format(ValorHora, [Ô]##0.00[Ô])
ElseIf v_ValorPrat >= [Ô]4,00[Ô] And v_ValorPrat <= [Ô]4,29[Ô] Then
v_ValorPrat = Format(ValorHora, [Ô]##0.00[Ô])
ElseIf v_ValorPrat >= [Ô]8,00[Ô] And v_ValorPrat <= [Ô]8,29[Ô] Then
v_ValorPrat = CDbl(ValorHora) + CDbl(ValorHora)
v_ValorPrat = Format(v_ValorPrat, [Ô]##0.00[Ô])
ElseIf v_ValorPrat >= [Ô]12,00[Ô] And v_ValorPrat <= [Ô]12,29[Ô] Then
v_ValorPrat = CDbl(ValorHora) + CDbl(ValorHora) + CDbl(ValorHora)
v_ValorPrat = Format(v_ValorPrat, [Ô]##0.00[Ô])
End If
v_valor1 = Replace(v_ValorPrat, [Ô].[Ô], [Ô][Ô])
v_valor11 = Replace(v_valor1, [Ô],[Ô], [Ô].[Ô])
v_ValorPrat = v_valor11
--------------------------------------------
COM CERTEZA EXISTEM MANEIRAS DE FAZER BEM MELHOR
VALEU
então JOERBETH, eu acho que não to entendendo direito, mas vou perguntar a tabela não seria essa:
04:00 = 1,00
04:30 = 1,50
05:00 = 2,00
05:30 = 2,50
06:00 = 3,00
06:30 = 3,50
07:00 = 4,00
07:30 = 4,50
[txt-color=#e80000]08:00 = 2,00[/txt-color]
é isso que quero entender
04:00 = 1,00
04:30 = 1,50
05:00 = 2,00
05:30 = 2,50
06:00 = 3,00
06:30 = 3,50
07:00 = 4,00
07:30 = 4,50
[txt-color=#e80000]08:00 = 2,00[/txt-color]
é isso que quero entender
issoooooooooooooo . eu devo ter colocado alguma coisa errado, agora, estou entado fazer aqui a outra, que 'valor é 1.50, isso que perguntei , quando é 1.00 ele calcula certinho a diferenã de 0,50, como assm?
rs
valeu
rs
valeu
E se for menos de 04:00 continuará sendo R$ 1,00 ???
sim, sim, isso mesmo
Acho que é isso o que você quer.
Num Form ponha 2 text box (Text1 e Text2) e um commando button (Command1). E o código abaixo dentro do evento click do command1
Para ver os outros valores mude o valor da constante VALOR.
Espero ter ajudado.
Num Form ponha 2 text box (Text1 e Text2) e um commando button (Command1). E o código abaixo dentro do evento click do command1
Private Sub Command1_Click()
Const INTERVALO As Long = 240 [ô]4 horas em minutos (4 x 60)
Const PERIODO As Long = 30 [ô]intra intervalos em minutos (30)
Const VALOR As Currency = 1 [ô]valor cobrado do intervalo
Const ADICIONAL As Currency = 0.5 [ô]adicional
Dim hora1 As Date, hora2 As Date
Dim tempoGasto As Long
Dim valorGasto As Currency
Dim nroIntervalos As Double
Dim nroPeriodos As Double
Dim tempoExtra As Double
[ô]Atribui os horários
hora1 = CDate(Text1)
hora2 = CDate(Text2)
[ô]Calcula o intervalo de tempo em minutos
tempoGasto = DateDiff([Ô]n[Ô], hora1, hora2)
[ô]Cálcula o tempo extra entre intervalos
tempoExtra = (tempoGasto Mod INTERVALO)
[ô]Calcula o número de intervalos e perÃodos
nroIntervalos = (tempoGasto \ INTERVALO)
nroPeriodos = (tempoExtra \ PERIODO)
[ô]Tempo menor que o mÃnimo, cobra o mÃnimo
If tempoGasto <= INTERVALO Then
valorGasto = VALOR
Else
[ô]Cálcula o valor final
valorGasto = (nroIntervalos * VALOR) + (nroPeriodos * ADICIONAL)
End If
MsgBox [Ô]Valor a pagar é: R$ [Ô] & Format$(valorGasto, [Ô]#0.00[Ô])
End Sub
Para ver os outros valores mude o valor da constante VALOR.
Espero ter ajudado.
Tópico encerrado , respostas não são mais permitidas