CALCULO DE TIME X VALOR

MARCELO.TREZE 21/08/2012 16:35:21
#408292
e se forem por exemplo 5:30 isso não geraria + 0,50
JOERBETH 21/08/2012 16:36:41
#408293
SIM, 5:30=2,50
JOERBETH 21/08/2012 16:40:10
#408294
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
MARCELO.TREZE 21/08/2012 16:42:25
#408295
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

JOERBETH 21/08/2012 17:05:24
#408296
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
DANLEONHART 21/08/2012 17:30:08
#408299
E se for menos de 04:00 continuará sendo R$ 1,00 ???
JOERBETH 21/08/2012 17:32:48
#408300
sim, sim, isso mesmo
FFCOUTO 21/08/2012 18:34:22
#408302
Resposta escolhida
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


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.
Página 2 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas