Como criar duas funções para calcular a idade em meses e em anos no Access
Avançado: requer codificação especializada, interoperabilidade e competências multiutilizadas.
Este artigo aplica-se a uma base de dados do Microsoft Office Access (.accdb e .mdb) e ao projeto do Microsoft Access (.apd).
Resumo
Este artigo mostra-lhe como criar duas funções que pode utilizar para calcular a idade de uma pessoa ou coisa com base numa data especificada.
Nota
Pode ver uma demonstração da técnica utilizada neste artigo no ficheiro de exemplo Qrysmp00.exe.
Mais informações
Criar as Funções
Escreva ou cole o seguinte código num módulo:
'==========================================================
' General Declaration
'==========================================================
Option Explicit
'*************************************************************
' FUNCTION NAME: Age()
'
' PURPOSE:
' Calculates age in years from a specified date to today's date.
'
' INPUT PARAMETERS:
' StartDate: The beginning date (for example, a birth date).
'
' RETURN
' Age in years.
'
'*************************************************************
Function Age (varBirthDate As Variant) As Integer
Dim varAge As Variant
If IsNull(varBirthdate) then Age = 0: Exit Function
varAge = DateDiff("yyyy", varBirthDate, Now)
If Date < DateSerial(Year(Now), Month(varBirthDate), _
Day(varBirthDate)) Then
varAge = varAge - 1
End If
Age = CInt(varAge)
End Function
'*************************************************************
' FUNCTION NAME: AgeMonths()
'
' PURPOSE:
' Compliments the Age() function by calculating the number of months
' that have expired since the last month supplied by the specified date.
' If the specified date is a birthday, the function returns the number of
' months since the last birthday.
'
' INPUT PARAMETERS:
' StartDate: The beginning date (for example, a birthday).
'
' RETURN
' Months since the last birthday.
'*************************************************************
Function AgeMonths(ByVal StartDate As String) As Integer
Dim tAge As Double
tAge = (DateDiff("m", StartDate, Now))
If (DatePart("d", StartDate) > DatePart("d", Now)) Then
tAge = tAge - 1
End If
If tAge < 0 Then
tAge = tAge + 1
End If
AgeMonths = CInt(tAge Mod 12)
End Function
Testar as Funções Age() e AgeMonths()
Para testar as funções Age() e AgeMonths(), siga estes passos.
Importante
Os passos seguintes pedem-lhe para alterar a data no seu computador. Certifique-se de que conclui o passo 6 para repor a data para a data atual.
Ao utilizar a ferramenta Data/Hora no Painel de Controlo, anote a data atual e, em seguida, defina a data para 3 de junho de 2001.
Abra um módulo ou crie um novo.
No Viewmenu, clique em Janela Imediata.
Suponha que a data de nascimento do seu amigo era 15 de novembro de 1967 e hoje é 3 de junho de 2001. Escreva a seguinte linha na janela Imediato e, em seguida, prima ENTER:
? Idade("15/11/67")
Tenha em atenção que o Microsoft Access responde com o valor 33 (anos).
Escreva a seguinte linha e, em seguida, prima ENTER:
? AgeMonths("15/11/67")
Tenha em atenção que o Microsoft Access responde com o valor 6, indicando que se passaram seis meses desde o último aniversário desta pessoa. O seu amigo tem 33 anos e 6 meses.
Ao utilizar a ferramenta Data/Hora no Painel de Controlo, reponha a data para a data atual que anotou no passo 1.
Utilizar as Funções Age() e AgeMonths()
O procedimento seguinte explica como marcar encomendas antigas ao colocar o valor de idade num novo controlo.
Na base de dados de exemplo Northwind.mdb, escreva as funções Age() e AgeMonth() num novo módulo.
Abra o formulário Encomendas na vista Estrutura e adicione um controlo de caixa de texto desvinculado.
Escreva a seguinte linha na propriedade ControlSource do novo controlo de caixa de texto:
=Age([OrderDate]) & " yrs " & AgeMonths([OrderDate]) & " mos"
Ver o formulário na vista Formulário. Tenha em atenção que a idade da encomenda é apresentada no novo controlo de caixa de texto.
Referências
Para obter mais informações sobre as diferenças de datas, no Visual Basic Revisor, clique em Ajuda do Microsoft Visual Basic no menu Ajuda, escreva função datediff no Assistente do Office ou no Assistente de Respostas e, em seguida, clique em Procurar para ver o tópico.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários