Bom dia,
TEnho uma consulta SQL abaixo:
SELECT TabAluno.Nome, TabAluno.Nome_Responsável, TabAluno.Cidade, TabAluno.Estado, TabAluno.Entrada_001, TabAluno.Saída_001, AnoMesDia([Nascimento]) AS Idade, Perm([Entrada_001],[Saída_001]) AS Permanência FROM TabAluno
Com a funçao AnoMesDia que calcula a idade e tempo de permanencia, só qu para permanencia está havendo um erro interceptável, que caso o aluno tenha já se retirado da instituição, ele tenha uma data de saída anterior a hoje, pois existe este campo na tabaluno, fiz uma mudança na função e dei o nome de (perm) e tá dando um erro:
AnoMesDia
Public Function AnoMesDia(dtData1 As Date) As String
On Error GoTo AnoMesDia_Err
Dim sTmp As String
Dim nDMA As Long
Dim NewDate As Date
Dim sSngPlural As String
Dim dtData2 As Date
dtData2 = Now
' Bloco Ano ---------------------
' Calcula número inteiro de anos
nDMA = DateDiff("yyyy", dtData1, dtData2)
' Se Data1+nDMA>Data2, subtrai 1 ano
If DateAdd("yyyy", nDMA, dtData1) > dtData2 Then
nDMA = nDMA - 1
End If
sSngPlural = " ano, "
If nDMA > 1 Then sSngPlural = " anos, "
sTmp = nDMA & sSngPlural
' Bloco Mês ---------------------
' Nova data de referência
NewDate = DateAdd("yyyy", nDMA, dtData1)
nDMA = DateDiff("m", NewDate, dtData2)
' Se Data1+nDMA>Data2, subtrai 1 mês
If DateAdd("m", nDMA, NewDate) > dtData2 Then
nDMA = nDMA - 1
End If
sSngPlural = " mês e "
If nDMA > 1 Then sSngPlural = " meses e "
sTmp = sTmp & nDMA & sSngPlural
' Bloco Dia ---------------------
NewDate = DateAdd("m", nDMA, NewDate)
nDMA = DateDiff("d", NewDate, dtData2)
sSngPlural = " dia"
If nDMA > 1 Then sSngPlural = " dias"
sTmp = sTmp & nDMA & sSngPlural
' Valor final da função
AnoMesDia = sTmp
AnoMesDia_Fim:
Exit Function
AnoMesDia_Err:
MsgBox Err.Description
Resume AnoMesDia_Fim
End Function
função perm
Public Function Perm(dtData1 As Date, dtData2 As Date) As String
On Error GoTo AnoMesDia_Err
Dim sTmp As String
Dim nDMA As Long
Dim NewDate As Date
Dim sSngPlural As String
Dim dtData2 As Date
'dtData2 = Now
' Bloco Ano ---------------------
' Calcula número inteiro de anos
nDMA = DateDiff("yyyy", dtData1, dtData2)
' Se Data1+nDMA>Data2, subtrai 1 ano
If DateAdd("yyyy", nDMA, dtData1) > dtData2 Then
nDMA = nDMA - 1
End If
sSngPlural = " ano, "
If nDMA > 1 Then sSngPlural = " anos, "
sTmp = nDMA & sSngPlural
' Bloco Mês ---------------------
' Nova data de referência
NewDate = DateAdd("yyyy", nDMA, dtData1)
nDMA = DateDiff("m", NewDate, dtData2)
' Se Data1+nDMA>Data2, subtrai 1 mês
If DateAdd("m", nDMA, NewDate) > dtData2 Then
nDMA = nDMA - 1
End If
sSngPlural = " mês e "
If nDMA > 1 Then sSngPlural = " meses e "
sTmp = sTmp & nDMA & sSngPlural
' Bloco Dia ---------------------
NewDate = DateAdd("m", nDMA, NewDate)
nDMA = DateDiff("d", NewDate, dtData2)
sSngPlural = " dia"
If nDMA > 1 Then sSngPlural = " dias"
sTmp = sTmp & nDMA & sSngPlural
' Valor final da função
AnoMesDia = sTmp
AnoMesDia_Fim:
Exit Function
AnoMesDia_Err:
MsgBox Err.Description
Resume AnoMesDia_Fim
End Function
Quando executo dá o seguinte erro:
Funçao 'Perm' indefinada na expressão
O que faço?
Atenciosamente,
Adilson Calixto
TEnho uma consulta SQL abaixo:
SELECT TabAluno.Nome, TabAluno.Nome_Responsável, TabAluno.Cidade, TabAluno.Estado, TabAluno.Entrada_001, TabAluno.Saída_001, AnoMesDia([Nascimento]) AS Idade, Perm([Entrada_001],[Saída_001]) AS Permanência FROM TabAluno
Com a funçao AnoMesDia que calcula a idade e tempo de permanencia, só qu para permanencia está havendo um erro interceptável, que caso o aluno tenha já se retirado da instituição, ele tenha uma data de saída anterior a hoje, pois existe este campo na tabaluno, fiz uma mudança na função e dei o nome de (perm) e tá dando um erro:
AnoMesDia
Public Function AnoMesDia(dtData1 As Date) As String
On Error GoTo AnoMesDia_Err
Dim sTmp As String
Dim nDMA As Long
Dim NewDate As Date
Dim sSngPlural As String
Dim dtData2 As Date
dtData2 = Now
' Bloco Ano ---------------------
' Calcula número inteiro de anos
nDMA = DateDiff("yyyy", dtData1, dtData2)
' Se Data1+nDMA>Data2, subtrai 1 ano
If DateAdd("yyyy", nDMA, dtData1) > dtData2 Then
nDMA = nDMA - 1
End If
sSngPlural = " ano, "
If nDMA > 1 Then sSngPlural = " anos, "
sTmp = nDMA & sSngPlural
' Bloco Mês ---------------------
' Nova data de referência
NewDate = DateAdd("yyyy", nDMA, dtData1)
nDMA = DateDiff("m", NewDate, dtData2)
' Se Data1+nDMA>Data2, subtrai 1 mês
If DateAdd("m", nDMA, NewDate) > dtData2 Then
nDMA = nDMA - 1
End If
sSngPlural = " mês e "
If nDMA > 1 Then sSngPlural = " meses e "
sTmp = sTmp & nDMA & sSngPlural
' Bloco Dia ---------------------
NewDate = DateAdd("m", nDMA, NewDate)
nDMA = DateDiff("d", NewDate, dtData2)
sSngPlural = " dia"
If nDMA > 1 Then sSngPlural = " dias"
sTmp = sTmp & nDMA & sSngPlural
' Valor final da função
AnoMesDia = sTmp
AnoMesDia_Fim:
Exit Function
AnoMesDia_Err:
MsgBox Err.Description
Resume AnoMesDia_Fim
End Function
função perm
Public Function Perm(dtData1 As Date, dtData2 As Date) As String
On Error GoTo AnoMesDia_Err
Dim sTmp As String
Dim nDMA As Long
Dim NewDate As Date
Dim sSngPlural As String
Dim dtData2 As Date
'dtData2 = Now
' Bloco Ano ---------------------
' Calcula número inteiro de anos
nDMA = DateDiff("yyyy", dtData1, dtData2)
' Se Data1+nDMA>Data2, subtrai 1 ano
If DateAdd("yyyy", nDMA, dtData1) > dtData2 Then
nDMA = nDMA - 1
End If
sSngPlural = " ano, "
If nDMA > 1 Then sSngPlural = " anos, "
sTmp = nDMA & sSngPlural
' Bloco Mês ---------------------
' Nova data de referência
NewDate = DateAdd("yyyy", nDMA, dtData1)
nDMA = DateDiff("m", NewDate, dtData2)
' Se Data1+nDMA>Data2, subtrai 1 mês
If DateAdd("m", nDMA, NewDate) > dtData2 Then
nDMA = nDMA - 1
End If
sSngPlural = " mês e "
If nDMA > 1 Then sSngPlural = " meses e "
sTmp = sTmp & nDMA & sSngPlural
' Bloco Dia ---------------------
NewDate = DateAdd("m", nDMA, NewDate)
nDMA = DateDiff("d", NewDate, dtData2)
sSngPlural = " dia"
If nDMA > 1 Then sSngPlural = " dias"
sTmp = sTmp & nDMA & sSngPlural
' Valor final da função
AnoMesDia = sTmp
AnoMesDia_Fim:
Exit Function
AnoMesDia_Err:
MsgBox Err.Description
Resume AnoMesDia_Fim
End Function
Quando executo dá o seguinte erro:
Funçao 'Perm' indefinada na expressão
O que faço?
Atenciosamente,
Adilson Calixto