IPB

Bem-vindo, visitante ( Entrar | Registrar )

 
Reply to this topicStart new topic
Complicou, Cáculo de Idade
Zeno
post Aug 2 2010, 12:20 PM
Post #1


Calouro
*

Grupo: Membros
Posts: 3
Registrado: 30-July 10
Membro N°: 3.320



Blz, depois te dou a resposta.

grato

Zeno
Go to the top of the page
 
+Quote Post
Roberto Pires
post Aug 2 2010, 12:08 PM
Post #2


Analista
****

Grupo: Membros
Posts: 283
Registrado: 3-July 08
De: Fraiburgo-SC
Membro N°: 11



Teste a função a seguir e adapte a sua necessidade.

CODE
Public Function CalculaIntervalo(DI As Date, DF As Date) As String
Intervalo = DF - DI

iAnos = Intervalo / 365.2425
Anos = Int(iAnos)
iMeses = (iAnos - Anos) * 12
Meses = Int(iMeses)
Dias = DateDiff("d", DateSerial(DatePart("yyyy", DI) + Anos, DatePart("m", DI) + Meses, Day(DI)), DF)

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

If Anos > 0 Then
    resultado = Anos & IIf(Anos > 1, " anos", " ano")
ElseIf Meses > 0 Then
    resultado = Meses & IIf(Meses > 1, " meses", " mês")
Else
    resultado = Dias & IIf(Dias > 1, " dias", " dia")
End If

MsgBox resultado
'CalculaIntervalo = resultado

End Function
Go to the top of the page
 
+Quote Post
Zeno
post Aug 2 2010, 10:56 AM
Post #3


Calouro
*

Grupo: Membros
Posts: 3
Registrado: 30-July 10
Membro N°: 3.320



Caro Roberto,

Em cima, matou a charada.......rs

Foi de grande valia sua dica.

Se me permite vou colocar outra questão, preciso tratar a idade também para aqueles que são menores de 1 ano. Por ex.: 1 mês de vida.
Continuo a tentar essa parte, se tiver alguma luz...estou ás ordens.

grato

Zeno
Go to the top of the page
 
+Quote Post
Roberto Pires
post Jul 30 2010, 02:21 PM
Post #4


Analista
****

Grupo: Membros
Posts: 283
Registrado: 3-July 08
De: Fraiburgo-SC
Membro N°: 11



Tente usar assim:

Anos: Int(([dt_obito] - [dt_nascimento]) / 365.2425)
Go to the top of the page
 
+Quote Post
Zeno
post Jul 30 2010, 12:12 PM
Post #5


Calouro
*

Grupo: Membros
Posts: 3
Registrado: 30-July 10
Membro N°: 3.320



Olá,

Tenho dois campos tipo data formato dd/mm/yyyy, são eles: dt_nascimento e dt_obito.
Estou tentanto calcular a diferença entre essas duas datas que é a idade em que o individuo foi a óbito. Para isso estou usando a função DataDiff da seguinte forma:
DifData("yyyy";[dt_nascimento];[dt_obito])-1, o estranho é que em alguns casos o retorno da idade vem truncado vezes para 1 ano a + e vezes para 1 ano a menos.
Por exe:
dt_nascimento = 23/01/1977
dt_obito = 01/02/2010
A função está retornando 32 anos, no entanto na realidade a resposta correta é 33 anos completos.
Se alguém souber o caminho das pedras e acender a luz agradeço rs..

abs

Zeno
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 usuário(s) está(ão) lendo este tópico (1 visitantes e 0 usuários anônimos)
0 membros:

 

Modos de Exibição: Padrão · Mudar para: Linear+ · Mudar para: Outline


Versão Simples Horário: 18th August 2019 - 09:02 AM