Pessoal, seguinte preciso de um grande auxilio de vocês, primeiramente sou novato em access, mesmo assim consegui até que elaborar um BD mais ou menos.
Mas tenho o seguinte problema:
Criei uma tabela CADASTRO DE ALUNOS que dentre outros campos, tem um campo de IDADE DO ALUNO, o qual calcula a idade considerando a data lançada no campo DATA DE NASCIMENTO. (esse cálculo funciona com uma macro, INCLUSIVE COPIADA DESDE FÓRUM (AGRADECIMENTOS) inserida nas propriedades da caixa de texto, aba dados, opção fonte do controle)
Detalhe:
NO FORMULÁRIO de cadastro dos alunos, quando inserido a data de nascimento, automaticamente aparece a idade do aluno, ou seja, a macro funciona certinho e aparece no formulário a idade. MAS ESSA IDADE que aparece no formulário NÃO ESTÁ SENDO salva(gravada) na TABELA CADASTRO DE ALUNOS, no campo IDADE DO ALUNO.
ASSIM, nas consultas não aparece a idade!!!!!
O que fazer?????,
Acredito que deve haver uma linha de comando que grava na tabela do cadastro, porém não sei como.
Agradeço a atenção.
NAO CONSEGUI COLOCAR A IMAGEM - SEGUE A MACRO QUE UTILIZO:
'Função para calcular a idade do acolhido
Function CalcIdadeAcolhido() As String
' Fornece a idade em anos, meses e dias
On Error GoTo CalcIdadeAcolhido_Err
Dim sTmp As String ' valor tmp da função
Dim nDMA As Long ' n Anos, Meses, Dias
Dim NewDate As Date ' data auxiliar de cálculo
Dim sSngPlural As String ' string (mês, meses), (ano, anos)
Dim dtData1 As Date ' data inicial de cálculo
Dim dtData2 As Date ' data final
If IsNull([DataNascimentoAcolhido]) Then 'Campo DataNascimentoAcolhido onde está a data de nacimento
Exit Function
End If
dtData1 = [DataNascimentoAcolhido]
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
CalcIdadeAcolhido = sTmp
CalcIdadeAcolhido_Fim:
Exit Function
CalcIdadeAcolhido_Err:
MsgBox Err.Description
Resume CalcIdadeAcolhido_Fim
End Function
Mas tenho o seguinte problema:
Criei uma tabela CADASTRO DE ALUNOS que dentre outros campos, tem um campo de IDADE DO ALUNO, o qual calcula a idade considerando a data lançada no campo DATA DE NASCIMENTO. (esse cálculo funciona com uma macro, INCLUSIVE COPIADA DESDE FÓRUM (AGRADECIMENTOS) inserida nas propriedades da caixa de texto, aba dados, opção fonte do controle)
Detalhe:
NO FORMULÁRIO de cadastro dos alunos, quando inserido a data de nascimento, automaticamente aparece a idade do aluno, ou seja, a macro funciona certinho e aparece no formulário a idade. MAS ESSA IDADE que aparece no formulário NÃO ESTÁ SENDO salva(gravada) na TABELA CADASTRO DE ALUNOS, no campo IDADE DO ALUNO.
ASSIM, nas consultas não aparece a idade!!!!!
O que fazer?????,
Acredito que deve haver uma linha de comando que grava na tabela do cadastro, porém não sei como.
Agradeço a atenção.
NAO CONSEGUI COLOCAR A IMAGEM - SEGUE A MACRO QUE UTILIZO:
'Função para calcular a idade do acolhido
Function CalcIdadeAcolhido() As String
' Fornece a idade em anos, meses e dias
On Error GoTo CalcIdadeAcolhido_Err
Dim sTmp As String ' valor tmp da função
Dim nDMA As Long ' n Anos, Meses, Dias
Dim NewDate As Date ' data auxiliar de cálculo
Dim sSngPlural As String ' string (mês, meses), (ano, anos)
Dim dtData1 As Date ' data inicial de cálculo
Dim dtData2 As Date ' data final
If IsNull([DataNascimentoAcolhido]) Then 'Campo DataNascimentoAcolhido onde está a data de nacimento
Exit Function
End If
dtData1 = [DataNascimentoAcolhido]
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
CalcIdadeAcolhido = sTmp
CalcIdadeAcolhido_Fim:
Exit Function
CalcIdadeAcolhido_Err:
MsgBox Err.Description
Resume CalcIdadeAcolhido_Fim
End Function