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]Erro DifData

    Compartilhe

    RodriguesChqao
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 104
    Registrado : 31/05/2016

    [Resolvido]Erro DifData

    Mensagem  RodriguesChqao em 15/3/2017, 18:39

    Boa tarde senhores

    Recentemente obtive ajuda no forum sobre o cálculo de diferença de de datas em uma consulta.

    Eu fiz a adaptação das orientações e minha fórmula ficou assim:

    Dias Restantes: DifData("yyyy";Agora();[Dt_Validade]) & " Ano(s)
    ," & DifData("m";Agora();[Dt_Validade]) & " Meses,
    " & DifData("d";Agora();[Dt_Validade]) & " Dia(s)"

    Onde:

    Agora(), seria a data do sistema

    Dt_Validade, data final de validade do documento.


    A idéia é calcular a diferença em anos, meses e dias entre a data do sistema e a Dt_Validade.

    A fórmula funcionou inicialmente, mas ao término do trabalho observei que o cálculo está errado.

    Considerando a data do Sistema como sendo 15/03/2017 e Dt_Validade 30/09/2018 a consulta está retornando 1 Ano(s), 18 Meses, 564 Dias (s)

    No entanto o resultado correto seria 1 ano, 6 meses e 20 dias.

    Espero contar novamente com o forum para aprender a fazer a consulta de forma correta.

    Obrigado
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1237
    Registrado : 05/02/2010

    Erro DifData

    Mensagem  good guy em 15/3/2017, 19:16

    Olá Rodrigues,

    Posta o arquivo, por favor.
    avatar
    Julio Lustosa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 187
    Registrado : 23/02/2011

    Re: [Resolvido]Erro DifData

    Mensagem  Julio Lustosa em 15/3/2017, 21:38

    Rodrigues, boa tarde!

    Na verdade o cálculo está certo, o que ele não está fazendo e retornando da forma como você deseja pq deve-se fazer mais algumas configurações na fórmula.

    Para calcular a diferença em anos, está correta, não vamos mexer, mas para calcular meses e dias sim.

    Meses: DifData("d";Mês(Agora());Mês([Dt_Validade]))
    Dias: DifData("d";Dia(Agora());Dia([Dt_Validade]))

    Vamos lá explicar o porque fiz assim. Você nota que para meses eu incluí a função Mês (Month), isso pq eu quero que ele calcule somente a diferença entre os meses dentro do mesmo ano, ou seja 2017. Pois o ano já foi calculado na primeira função (DifData("yyyy";Agora();[Dt_Validade])) que não mexemos. Mas para que ele me retorne o inteiro, temos que alterar também o "m" da função para "d". Como já estou extraindo o mês de cada data para calcular a diferença, a função entende então que é um cálculo entre dias. Se você deixar o "m", ele vai retornar zero (pode testar).

    Já para extrair somente os dias, coloco no lugar do Mês() a função Dia(), e mantenho o "d" na função. Assim ele vai calcular somente os dias do ano corrente (2017) e do mês corrente (março), sacou.

    Faça o teste e retorne com o resultado.

    Aguardamos.

    RodriguesChqao
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 104
    Registrado : 31/05/2016

    Re: [Resolvido]Erro DifData

    Mensagem  RodriguesChqao em 16/3/2017, 01:14

    Valeu Julio testei e funcionou direitinho. Obrigado

    RodriguesChqao
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 104
    Registrado : 31/05/2016

    consulta retornando dia negativo

    Mensagem  RodriguesChqao em 27/3/2017, 14:57

    Bom dia!

    Depois de inserir alguns dados no meu BD notei o seguinte erro com a consulta para calcular a diferença de datas.
    O estranho é que está acontecendo somente com alguns registros.

    Segue o problema:

    Dt_Validade = 2606/2017
    Dia de Hoje = 27/03/2017

    Fórmula para cálculo:
    Dias Restantes: DifData("yyyy";Agora();[Dt_Validade]) & " Ano(s)," & DifData("d";Mês(Agora());Mês([Dt_Validade])) & " Meses, " & DifData("d";Dia(Agora());Dia([Dt_Validade])) & " Dia(s)"

    O resultado deveria ser 0 ano(s), 3 meses e 1 Dia(s) e não 0 ano(s), 3 meses e -1 Dia(s)

    Onde está o erro.

    obrigado
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1237
    Registrado : 05/02/2010

    Erro DifData

    Mensagem  good guy em 7/4/2017, 16:36

    Olá Rodrigues,

    Utilize a função Abs.

    Código:

    Dias Restantes: DifData("yyyy";Agora();[Dt_Validade]) & " Ano(s)," & DifData("d";Mês(Agora());Mês([Dt_Validade])) & " Meses, " & DifData("d";Dia(Agora());Abs(Dia([Dt_Validade]))) & " Dia(s)"

    RodriguesChqao
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 104
    Registrado : 31/05/2016

    Re: [Resolvido]Erro DifData

    Mensagem  RodriguesChqao em 11/4/2017, 14:33

    Obrigado!

      Data/hora atual: 17/11/2018, 03:06