MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Exibição de idade em meses e anos

    Compartilhe

    ewertonms
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 20/09/2012

    [Resolvido]Exibição de idade em meses e anos

    Mensagem  ewertonms em Qui 16 Jul 2015, 14:03

    Olá pessoal encontrei esse código no forum
    Código:

    Function CalculaIdade(DataNasc As Date)
        
        Dim Anos, meses, dias
        Dim iAnos As Double, iMeses As Double, Intervalo As Double
        
        ' O resultado da diferença está em Double
        Intervalo = Date - DataNasc
        
        ' Um ano tem exatamente 365,2425 dias, ou
        ' 365 dias, cinco horas, 49 minutos e 12 segundos.
        ' Ou aproximadamente 365,25 dias.
        iAnos = Intervalo / 365.2425
        Anos = Int(iAnos)
        iMeses = (iAnos - Anos) * 12
        meses = Int(iMeses)
        
        dias = DateDiff("d", DateSerial(DatePart("yyyy", DataNasc) + Anos, DatePart("m", DataNasc) + meses, Day(DataNasc)), Date)
        
        If dias >= 30 Then
            Select Case dias
            Case 30
                dias = 0
            Case 31
                dias = 1
            End Select
            meses = meses + 1
        End If
        
        If meses = 12 Then
            meses = 0
            Anos = Anos + 1
        End If
        
    FIM:
        If Anos > 1 Then
            Anos = Anos & " anos "
        ElseIf Anos = 0 Then
            Anos = ""
        Else
            Anos = Anos & " ano "
        End If
            
        If meses > 1 Then
            meses = meses & " meses "
        ElseIf meses = 0 Then
            meses = ""
        Else
            meses = meses & " mês "
        End If
        
        If dias > 1 Then
            dias = dias & " dias"
        Else
            dias = dias & " dia"
        End If
            
        CalculaIdade = Anos & meses & dias
    End Function

    estou tentando dividir a exibição da idade da seguinte maneira, se a idade for 1 ano ou maior exiba apenas os anos, se a idade for menor que 1 ano e maior ou igual 1 mes exiba a idade em meses e se for menor que 1 mes exiba a idade em dias, exemplos:

    idade: 4 anos

    idade: 3 meses

    idade: 7 dias

    do jeito que está aparece a idade em anos meses e dias junto, tentei de algumas formas o "IF" antes da função devolver o resultado mas ele só devolve quando é 1 ano se a idade deveria aparecer em meses ou dias não funciona, segue o form com o código do jeito q modifiquei, se alguém puder me ajudar.
    Anexos
    exibeIdade.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (10 Kb) Baixado 10 vez(es)
    avatar
    ÓscarSantos
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 333
    Registrado : 18/09/2013

    Re: [Resolvido]Exibição de idade em meses e anos

    Mensagem  ÓscarSantos em Qui 16 Jul 2015, 14:20

    boas tardes,
    Tens este bom exemplo do mestre JPaulo.

    [Você precisa estar registrado e conectado para ver este link.]

    Abraço


    .................................................................................
    _________________________________________________________
    sempre a aprender
    para enviar ou postar só access2003 infelizmente é o que tenho no trabalho [Você precisa estar registrado e conectado para ver esta imagem.] .
    para dar tópio como resolvido [Você precisa estar registrado e conectado para ver este link.]

    ewertonms
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 20/09/2012

    Re: [Resolvido]Exibição de idade em meses e anos

    Mensagem  ewertonms em Qui 16 Jul 2015, 15:58

    Obrigado Oscar, consegui fazer funcionar perfeitamente, dei uma olhada no código sugerido e tirei algumas ideias, em todos os testes que fiz deu certo vou deixar o código abaixo caso alguem precise ou tenha alguma sugestão de melhora.

    Código:

    Function CalculaIdade(DataNasc As Date)

    Dim Anos, meses, dias

    If IsNull(DataNasc) Then
    CalculaIdade = ""
    Exit Function
    End If

    Anos = DateDiff("yyyy", DataNasc, Now)

    If DateAdd("yyyy", Anos, DataNasc) > Now Then
        Anos = Anos - 1
     End If

    If Anos > 1 Then
     
        CalculaIdade = Anos & " anos"
    ElseIf Anos = 1 Then
        CalculaIdade = Anos & " ano"
    Else
        NewDate = DateAdd("yyyy", Anos, DataNasc)
        meses = DateDiff("m", NewDate, Now)
        
        If DateAdd("m", meses, NewDate) > Now Then
        meses = meses - 1
        End If
            
             If meses > 1 Then
                CalculaIdade = meses & " meses"
             ElseIf meses = 1 Then
                CalculaIdade = meses & " mês"
             Else
                dias = DateDiff("d", DataNasc, Now)
                    If dias > 1 Then
                        CalculaIdade = dias & " dias"
                        Else
                        CalculaIdade = dias & " dia"
                     End If
            End If
    End If

    End Function


    depois só chamar a função passando o nome do campo com a data de nascimento.

    ewertonms
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 20/09/2012

    Re: [Resolvido]Exibição de idade em meses e anos

    Mensagem  ewertonms em Qui 16 Jul 2015, 16:00

    Resolvido
    avatar
    ÓscarSantos
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 333
    Registrado : 18/09/2013

    Re: [Resolvido]Exibição de idade em meses e anos

    Mensagem  ÓscarSantos em Qui 16 Jul 2015, 16:24

    Ainda bem e o forum agradece.

    Abraço


    .................................................................................
    _________________________________________________________
    sempre a aprender
    para enviar ou postar só access2003 infelizmente é o que tenho no trabalho [Você precisa estar registrado e conectado para ver esta imagem.] .
    para dar tópio como resolvido [Você precisa estar registrado e conectado para ver este link.]

      Data/hora atual: Qui 23 Nov 2017, 15:07