Tenho num formulário dois campos de datas ("TxtInicioTrat" e "TxtFimTrat" que utilizo para referenciar o Início de Tratamento de um utente e o outro o Fim do Tratamento, e como são tratamentos longos criei um campo desacoplado que me dá o tempo de tratamento (anos, meses e dias) de cada utente através de um módulo que foi criado para esse efeito. O que pretendo, e não sei como resolver, é que quando o campo "TxtFimTratamento" for preenchido e ele só é preenchido quando o utente tem alta médica o campo desacoplado que tem o calculo de tempo de tratamento pare de contar o tempo daquele utente. O que acontece agora é que utentes que já pararam o tratamento continua a contar o tempo.
O módulo tem a seguinte programação:
- Código:
Public Function CalcularTempTrat(ByVal TxtInicioTrat As Date) As String
Dim vCalcularAno As Double
Dim vCalcularMes As Double
Dim vCalcularDia As Double
Dim TxtDataActual As Date
Dim temp As Date
If IsNull(TxtInicioTrat) Then
CalcularTempTrat = ""
Exit Function
End If
TxtDataActual = Date
If TxtInicioTrat > TxtDataActual Then
temp = TxtInicioTrat
TxtInicioTrat = TxtDataActual
TxtDataActual = temp
ElseIf TxtInicioTrat = TxtDataActual Then
CalcularTempTrat = "0 días"
Exit Function
End If
If Month(TxtInicioTrat) > Month(TxtDataActual) Then
vCalcularAno = DateDiff("yyyy", TxtInicioTrat, TxtDataActual) - 1
Else
vCalcularAno = DateDiff("yyyy", TxtInicioTrat, TxtDataActual)
End If
If Day(TxtInicioTrat) > Day(TxtDataActual) Then
vCalcularMes = DateDiff("m", DateAdd("yyyy", vCalcularAno, TxtInicioTrat), TxtDataActual) - 1
If vCalcularMes < 0 Then
vCalcularMes = 12 + vCalcularMes
vCalcularAno = vCalcularAno - 1
End If
Else
vCalcularMes = DateDiff("m", DateAdd("yyyy", vCalcularAno, TxtInicioTrat), TxtDataActual)
End If
vCalcularDia = DateDiff("d", DateAdd("m", vCalcularAno * 12 + vCalcularMes, TxtInicioTrat), TxtDataActual)
'Esta é a base do cálculo
If vCalcularAno = 1 Then
CalcularTempTrat = vCalcularAno & " ano"
ElseIf vCalcularAno > 1 Then
CalcularTempTrat = vCalcularAno & " anos"
End If
If vCalcularMes = 1 Then
CalcularTempTrat = IIf(CalcularTempTrat = "", "", CalcularTempTrat & " * ") & vCalcularMes & " mes"
ElseIf vCalcularMes > 1 Then
CalcularTempTrat = IIf(CalcularTempTrat = "", "", CalcularTempTrat & " * ") & vCalcularMes & " meses"
End If
If vCalcularDia = 1 Then
CalcularTempTrat = IIf(CalcularTempTrat = "", "", CalcularTempTrat & " * ") & vCalcularDia & " día"
ElseIf vCalcularDia > 1 Then
CalcularTempTrat = IIf(CalcularTempTrat = "", "", CalcularTempTrat & " * ") & vCalcularDia & " días"
End If
End Function
Cumprimentos