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]Cálculo idade ano menor 1950 fica negativo

    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1077
    Registrado : 23/03/2010

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Finformática 1/2/2024, 20:53

    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
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1077
    Registrado : 23/03/2010

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Finformática 6/2/2024, 18:26

    UP
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Alexandre Neves 9/2/2024, 20:55

    Boa noite
    Testei com 4-1-1940 e funcionou


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1077
    Registrado : 23/03/2010

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Finformática 10/2/2024, 01:01

    Olá Mestre!

    Seria a formatação do Windows para dd/mm/aaaa e tabela com dd/mm/aa?

    Abraços
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Alexandre Neves 10/2/2024, 13:13

    Boa tarde
    Não sei, mande pequeno exemplo demonstrativo que não funciona


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1077
    Registrado : 23/03/2010

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Finformática 10/2/2024, 15:21

    Grande Alexandre!

    Muito grato por sua atenção. Segue anexo amostra do problema.

    Muito obrigado. Abraços

    Anexos
    [Resolvido]Cálculo idade ano menor 1950 fica negativo AttachmentSisCadastroIdade.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (125 Kb) Baixado 7 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Alexandre Neves 10/2/2024, 16:00

    Não vejo problema
    Esqueci-me de dizer que tinha desactivado o resposta de inválida
    Código:
    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 - Idade Negativa"
        'Else
            ' Formatando a idade como uma string
            Calcularidade = anos & " anos, " & meses & " meses, " & dias & " dias"
        'End If
    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1077
    Registrado : 23/03/2010

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Finformática 10/2/2024, 16:34

    Mestre!

    Sinceramente não entendi o ocorrido. Esse comentário de "Data Inválida" para ano <1950 foi colocado para chamar atenção pelo fato da idade ficar negativa. Quero dizer, estava só substituindo a idade negativa. Você tirou a parte do código e funcionou. Não alterou mais nada? Acredito que não. Fiz o mesmo no meu código e passou a funcionar. Não entendi.
    Muito obrigado.
    Abraço
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1077
    Registrado : 23/03/2010

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Finformática 10/2/2024, 17:24

    Caro Alexandre.

    Estive observando aqui os códigos anteriores e encontrei um que já estava funcionando corretamente antes de colocar o "Data Inválida". Misturei as bolas. Desculpas por te ocupar. Havia feito várias tentativas. Uma os meses ficavam negativos, acertei. Depois dias negativos, acertei. Depois os anos... até acertar tudo. Muito grato. Minhas sinceras desculpas.

    Abraço
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Alexandre Neves 11/2/2024, 19:54

    Boa tarde
    Erros todos cometem. O importante é não repetir os mesmos erros e errar cada vez menos.
    Marque o "Resolvido"
    Abraços


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1077
    Registrado : 23/03/2010

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Finformática 16/2/2024, 01:07

    Muito obrigado amigos mestres.

    Forte abraço
    Finformática
    Finformática
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1077
    Registrado : 23/03/2010

    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Finformática 16/2/2024, 01:10

    Muito grato

    Conteúdo patrocinado


    [Resolvido]Cálculo idade ano menor 1950 fica negativo Empty Re: [Resolvido]Cálculo idade ano menor 1950 fica negativo

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 18:21