Olá, tenho que calcular a diária de um serviço com base no tipo do motorista que irá executar o serviço, para isso eu verifico qual o tipo do motorista, caso ele seja contratado ele tem um valor fixo de viagem, mas caso este seja efetivo o valor da diária deve ser perguntado, eu faço essa verificação após o formulário ser atualizado, não faço depois da atualização da caixa de combinação pois eu posso ter dois motoristas caso a quilometragem informada seja superior ou igual a 500 km, o problema é que após atualizar o motorista pode sempre ser efetivo, por isso eu coloquei duas condições, ele ser efetivo e me certificar de que essa seja a primeira seleção após uma atualização, por isso tenho no evento click das caixas de combinção de seleção dos motoristas a atribuição de valor, logo eu só peço o valor da diária do motorista caso essa for a minha primeira seleção, pois se for julgar pela atualização ele vai pedir novamente a quilometragem do outro motorista, a lógica está correta, o unico problema é que o valor que serve de orientação vem de outra sub, então preciso ou passar o valor da variável como parâmetro ou criar uma variável global, eu tentei a segunda opção, meu problema é apenas dessa passagem de parametro, segue o código..
- Código:
Public verPm As Integer
Public verSm As Integer
Sub combMotorista_Click()
verPm = 1
Me.Requery
End Sub
Sub combSmoto_Click()
verSm = 1
Me.Requery
End Sub
Private Sub Form_AfterUpdate()
'CALCULAR QUANTIDADE DE DIÁRIAS
On Error Resume Next
Dim Diarias As Double
Dim valor As Double
Diarias = DateDiff("n", dataInicio & " " & horaInicio, dataFim & " " & horaFim) / 1440
valor = Left(Diarias, 3)
qtdDiarias = valor
'CALCULAR VALOR GASTO COM DIÁRIA
Dim val As Currency
Dim dme As Currency
Dim valSm As Currency
Dim dmes As Currency
MsgBox verSm
MsgBox verPm
If combMotorista.Column(2) = "CONTRATADO" Then
val = qtdDiarias * 235.68
ElseIf combMotorista.Column(2) = "EFETIVO" And verPm = 1 Then
verPm = 0
dme = InputBox("Informe o valor da diária do motorista")
val = qtdDiarias * dme
End If
If Me.combSmoto.Visible = True Then
If combSmoto.Column(2) = "CONTRATADO" Then
valSm = qtdDiarias * 235.68
ElseIf combSmoto.Column(2) = "EFETIVO" And verSm = 1 Then
verSm = 0
dmes = InputBox("Informe o valor da diária do motorista")
valSm = qtdDiarias * dmes
End If
End If
diaMot = val + valSm