Estou com problema para montar a seguinte consulta:
Tenho os campos:
DtRegistro/DtAcolhim/DtEfetiva/DtSaida/Hoje:Data() (para o caso de não haver data de saida)
preciso adicionar os seguintes campos calculados:
diferença: DtRegistro X DtAcolhim
diferença: DtAcolhim X DtEfetiva
diferença: DtEfetiva X DtSaida
diferença: DtAcolhim X DtSaida
diante das seguintes possibilidades:
1. DtRegistro(ok)/DtAcolhim(ok)/DtEfetiva(ok)/DtSaida(ok)/Hoje(ok) = Saiu depois de efetivado
2. DtRegistro(ok)/DtAcolhim(ok)/DtEfetiva(ok)/DtSaida("")/Hoje(ok) = Em Atendimento
3. DtRegistro(ok)/DtAcolhim(ok)/DtEfetiva("")/DtSaida(ok)/Hoje(ok) = Saiu sem efetivação
4. DtRegistro(ok)/DtAcolhim(ok)/DtEfetiva("")/DtSaida("")/Hoje(ok) = Aguardando efetivação
5. DtRegistro(ok)/DtAcolhim("")/DtEfetiva("")/DtSaida(ok)/Hoje(ok) = Nem chegou a ser entrevistado
6. DtRegistro(ok)/DtAcolhim("")/DtEfetiva("")/DtSaida("")/Hoje(ok) = Aguardando entrevista
a função que estou usando para o calculo é:
Public Function CalculaPeriodo(Date1 As Date, Date2 As Date)
'Desenvolvido por João Rodrigues (JR)
'
'Data: Mai/1999
If Date1 > Date2 Then
MsgBox "Data Inicial não pode ser maior que Data Final!", vbExclamation, "Erro"
Exit Function
End If
Dim Anos, meses, dias
Dim iAnos As Double, iMeses As Double, Intervalo As Double
' O resultado da diferença está em Double.
Intervalo = Date2 - Date1
' Um ano tem exatamente 365,2425 dias, ou
' 365 dias, 5 horas, 49 minutos e 12 segundos.
' Ou aproximadamente 365,25 dias.
iAnos = Intervalo / 365.2425
Anos = Int(iAnos)
iMeses = (iAnos - Anos) * 12
meses = Int(iMeses)
dias = DateDiff("d", DateSerial(DatePart("yyyy", Date1) + Anos, DatePart("m", Date1) + meses, Day(Date1)), Date2)
Select Case dias
Case -1
dias = 30
meses = meses - 1
Case -2
dias = 29
meses = meses - 1
Case 30 Or 31
dias = 0
meses = meses + 1
End Select
If meses = 12 Then
meses = 0
Anos = Anos + 1
End If
Fim:
If Anos > 1 Then
Anos = Anos & " anos "
Else
Anos = Anos & " ano "
End If
If meses > 1 Then
meses = meses & " meses "
Else
meses = meses & " mês "
End If
If dias > 1 Then
dias = dias & " dias"
Else
dias = dias & " dia"
End If
CalculaPeriodo = Anos & meses & dias
End Function
Se alguem puder me dar um força na montagem, agradeço.
um abraço.
Tenho os campos:
DtRegistro/DtAcolhim/DtEfetiva/DtSaida/Hoje:Data() (para o caso de não haver data de saida)
preciso adicionar os seguintes campos calculados:
diferença: DtRegistro X DtAcolhim
diferença: DtAcolhim X DtEfetiva
diferença: DtEfetiva X DtSaida
diferença: DtAcolhim X DtSaida
diante das seguintes possibilidades:
1. DtRegistro(ok)/DtAcolhim(ok)/DtEfetiva(ok)/DtSaida(ok)/Hoje(ok) = Saiu depois de efetivado
2. DtRegistro(ok)/DtAcolhim(ok)/DtEfetiva(ok)/DtSaida("")/Hoje(ok) = Em Atendimento
3. DtRegistro(ok)/DtAcolhim(ok)/DtEfetiva("")/DtSaida(ok)/Hoje(ok) = Saiu sem efetivação
4. DtRegistro(ok)/DtAcolhim(ok)/DtEfetiva("")/DtSaida("")/Hoje(ok) = Aguardando efetivação
5. DtRegistro(ok)/DtAcolhim("")/DtEfetiva("")/DtSaida(ok)/Hoje(ok) = Nem chegou a ser entrevistado
6. DtRegistro(ok)/DtAcolhim("")/DtEfetiva("")/DtSaida("")/Hoje(ok) = Aguardando entrevista
a função que estou usando para o calculo é:
Public Function CalculaPeriodo(Date1 As Date, Date2 As Date)
'Desenvolvido por João Rodrigues (JR)
'
'Data: Mai/1999
If Date1 > Date2 Then
MsgBox "Data Inicial não pode ser maior que Data Final!", vbExclamation, "Erro"
Exit Function
End If
Dim Anos, meses, dias
Dim iAnos As Double, iMeses As Double, Intervalo As Double
' O resultado da diferença está em Double.
Intervalo = Date2 - Date1
' Um ano tem exatamente 365,2425 dias, ou
' 365 dias, 5 horas, 49 minutos e 12 segundos.
' Ou aproximadamente 365,25 dias.
iAnos = Intervalo / 365.2425
Anos = Int(iAnos)
iMeses = (iAnos - Anos) * 12
meses = Int(iMeses)
dias = DateDiff("d", DateSerial(DatePart("yyyy", Date1) + Anos, DatePart("m", Date1) + meses, Day(Date1)), Date2)
Select Case dias
Case -1
dias = 30
meses = meses - 1
Case -2
dias = 29
meses = meses - 1
Case 30 Or 31
dias = 0
meses = meses + 1
End Select
If meses = 12 Then
meses = 0
Anos = Anos + 1
End If
Fim:
If Anos > 1 Then
Anos = Anos & " anos "
Else
Anos = Anos & " ano "
End If
If meses > 1 Then
meses = meses & " meses "
Else
meses = meses & " mês "
End If
If dias > 1 Then
dias = dias & " dias"
Else
dias = dias & " dia"
End If
CalculaPeriodo = Anos & meses & dias
End Function
Se alguem puder me dar um força na montagem, agradeço.
um abraço.