MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

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

    avatar
    ewertonms
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  ewertonms 16/7/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
    [Resolvido]Exibição de idade em meses e anos AttachmentexibeIdade.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (10 Kb) Baixado 17 vez(es)
    ÓscarSantos
    ÓscarSantos
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  ÓscarSantos 16/7/2015, 14:20

    boas tardes,
    Tens este bom exemplo do mestre JPaulo.

    https://www.maximoaccess.com/t283-calcula-idade?highlight=idade

    Abraço


    .................................................................................
    _________________________________________________________
    sempre a aprender
    para enviar ou postar só access2007 infelizmente é o que tenho no trabalho Sad .
    para dar tópico como resolvido https://www.maximoaccess.com/t860-resolucao-de-topicos
    avatar
    ewertonms
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  ewertonms 16/7/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.
    avatar
    ewertonms
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  ewertonms 16/7/2015, 16:00

    Resolvido
    ÓscarSantos
    ÓscarSantos
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  ÓscarSantos 16/7/2015, 16:24

    Ainda bem e o forum agradece.

    Abraço


    .................................................................................
    _________________________________________________________
    sempre a aprender
    para enviar ou postar só access2007 infelizmente é o que tenho no trabalho Sad .
    para dar tópico como resolvido https://www.maximoaccess.com/t860-resolucao-de-topicos

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 03:02