MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

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 : 67
    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 5 vez(es)

    ÓscarSantos
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 327
    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 : 67
    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 : 67
    Registrado : 20/09/2012

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

    Mensagem  ewertonms em Qui 16 Jul 2015, 16:00

    Resolvido

    ÓscarSantos
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 327
    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: Sab 10 Dez 2016, 12:37