Grandes Mestres
Tenho uma tabela que contém um campo DataNascimento. Baseado nesse campo quero exibir campo XIdade:CalcularIdade(dataNascimentoCli que chama uma função conforme código abaixo.
Public Function CalcularIdade(dataNascimentoCli As Date) As String
Dim anos As Integer
Dim meses As Integer
Dim dias As Integer
Dim hoje As Date
hoje = Date
' Calcular a diferença em anos
anos = DateDiff("yyyy", dataNascimentoCli, hoje)
' Calcular a diferença em meses e dias
Dim dataAniversarioAtual As Date
dataAniversarioAtual = DateSerial(Year(hoje), Month(dataNascimentoCli), Day(dataNascimentoCli))
If hoje < dataAniversarioAtual Then
anos = anos - 1
dataAniversarioAtual = DateSerial(Year(hoje) - 1, Month(dataNascimentoCli), Day(dataNascimentoCli))
End If
meses = DateDiff("m", dataAniversarioAtual, hoje)
dias = hoje - DateAdd("m", meses, dataAniversarioAtual)
' Corrigir para garantir que dias não sejam negativos
If dias < 0 Then
dias = DateDiff("d", dataAniversarioAtual, hoje)
End If
' Se o ano de nascimento for menor que 1950, definir a idade como "Data Inválida"
If Year(dataNascimentoCli) < 1950 Then
CalcularIdade = "Data Inválida"
Else
' Formatando a idade como uma string
CalcularIdade = anos & " anos, " & meses & " meses, " & dias & " dias"
End If
End Function
Aparentemente faz tudo certinho, no entanto se o ano de nascimento for menor que 1950 a idade fica negativa. Onde é a bronca?
Muito grato
Tenho uma tabela que contém um campo DataNascimento. Baseado nesse campo quero exibir campo XIdade:CalcularIdade(dataNascimentoCli que chama uma função conforme código abaixo.
Public Function CalcularIdade(dataNascimentoCli As Date) As String
Dim anos As Integer
Dim meses As Integer
Dim dias As Integer
Dim hoje As Date
hoje = Date
' Calcular a diferença em anos
anos = DateDiff("yyyy", dataNascimentoCli, hoje)
' Calcular a diferença em meses e dias
Dim dataAniversarioAtual As Date
dataAniversarioAtual = DateSerial(Year(hoje), Month(dataNascimentoCli), Day(dataNascimentoCli))
If hoje < dataAniversarioAtual Then
anos = anos - 1
dataAniversarioAtual = DateSerial(Year(hoje) - 1, Month(dataNascimentoCli), Day(dataNascimentoCli))
End If
meses = DateDiff("m", dataAniversarioAtual, hoje)
dias = hoje - DateAdd("m", meses, dataAniversarioAtual)
' Corrigir para garantir que dias não sejam negativos
If dias < 0 Then
dias = DateDiff("d", dataAniversarioAtual, hoje)
End If
' Se o ano de nascimento for menor que 1950, definir a idade como "Data Inválida"
If Year(dataNascimentoCli) < 1950 Then
CalcularIdade = "Data Inválida"
Else
' Formatando a idade como uma string
CalcularIdade = anos & " anos, " & meses & " meses, " & dias & " dias"
End If
End Function
Aparentemente faz tudo certinho, no entanto se o ano de nascimento for menor que 1950 a idade fica negativa. Onde é a bronca?
Muito grato