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]Comparar Mês/Ano de duas datas

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Comparar Mês/Ano de duas datas Empty [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  rgondim 29/5/2012, 15:01

    Tentei comparar duas datas com a seguinte expressão no evento antes de atualizar:

    If Month(DtAvPrevio) And Year(DtAvPrevio) <> Month(Competencia) And Year(Competencia) Then
    MsgBox "Data Incompatível!"
    End If

    DtAvPrevio = 21/12/2011
    Competencia = 01/12/2011

    Não funcionou. Apresenta "Data Incompatível!". Mas o mês e o ano são os mesmos.
    Onde está o erro?


    Última edição por rgondim em 29/5/2012, 17:47, editado 2 vez(es)
    avatar
    Convidad
    Convidado


    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  Convidad 29/5/2012, 15:08


    Tente:

    If Month(DtAvPrevio) <> Month(Competencia) And Year(DtAvPrevio) <> Year(Competencia) Then

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  rgondim 29/5/2012, 15:18

    Não funcionou... Não retornou nenhum resultado.
    avatar
    Convidad
    Convidado


    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  Convidad 29/5/2012, 15:28

    Tente assim:

    If(Month(DtAvPrevio) <> Month(Competencia)) And (Year(DtAvPrevio) <> Year(Competencia)) Then

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  Alexandre Neves 29/5/2012, 16:30

    Boa tarde, rgondim

    Poderá ser
    If Format(TxtDtAvPrevio,"mm-yyyy") <> Format(TxtCompetencia,"mm-yyyy") Then
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  rgondim 29/5/2012, 17:46

    Alexandre,
    funcionou.
    If Format(TxtDtAvPrevio,"mm-yyyy") <> Format(TxtCompetencia,"mm-yyyy") Then

    Balem,
    também funcionou, mas Or ao invés de And
    If(Month(DtAvPrevio) <> Month(Competencia)) Or (Year(DtAvPrevio) <> Year(Competencia)) Then

    Valeu.
    avatar
    Convidad
    Convidado


    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  Convidad 29/5/2012, 20:18

    Gondim
    Deveria funcionar com o AND.
    Porque está verificando 2 condições simultaneamente.

    Mas o código do Alexandre é mais enxuto.


    Abraços


    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  rgondim 29/5/2012, 21:58

    Achei estranho funcionar com Or e não And.
    Testei várias vezes e sempre dava o resultado correto.
    Vou usar a fórmula do Alexandre.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  Alexandre Neves 29/5/2012, 22:26

    Vamos lá à lição:

    A expressão AND significa que a condição se verifica Verdadeira quando ambos (mês e ano) forem diferentes.
    Se apenas um deles for diferente, a condição devolve Falso.

    Mas queremos que, basta um dos membros ser diferente para condição devolver Verdadeiro (a expressão ser diferente)
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  rgondim 30/5/2012, 17:46

    Caro Alexandre, agradeço à lição de matemática do Fundamental, elementar...rsrs

    Eu não expliquei corretamente: testei muitas vezes com a condição Or e o resultado sempre era o correto para And. Então minha surpresa...
    Imagino que é essa uma das situações de "fio entupido".
    Por isso, na dúvida, preferi usar sua solução, pois vai que o fio desentope lá na frente...rsrs

    Valeu!
    avatar
    Convidad
    Convidado


    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  Convidad 30/5/2012, 18:14

    Gondim

    O Alexandre está corretíssimo Laughing

    O que eu no caso, esqueci que estamos testando como ele mesmo disse qualquer condição.

    Veja, assim está correto:

    If(Month(DtAvPrevio) = Month(Competencia)) And (Year(DtAvPrevio) = Year(Competencia)) Then

    As duas condições tem que estar verdadeira para retornar verdadeiro o conjunto.

    Aqui também está correto:

    If(Month(DtAvPrevio) <> Month(Competencia)) Or (Year(DtAvPrevio) <> Year(Competencia)) Then

    Só que ao contrário da anterior, se qualquer uma das condições for verdadeira, retornará verdadeiro.
    Abraços

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  rgondim 30/5/2012, 18:36

    Balem, o curioso é que tentei...
    If(Month(DtAvPrevio) <> Month(Competencia)) Or (Year(DtAvPrevio) <> Year(Competencia)) Then

    e só retorna o resultado verdadeiro se ambas as condições forem verdadeiras (mês e ano das duas datas). Ou seja, está se comportando como se fosse...
    If(Month(DtAvPrevio) <> Month(Competencia)) And (Year(DtAvPrevio) <> Year(Competencia)) Then


    Mas enfim, não localizei a causa do problema e preferi usar a outra solução.
    avatar
    Convidad
    Convidado


    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  Convidad 30/5/2012, 18:57

    É verdade, daí fica muito estranho mesmo.

    Mas como disse, o código do Alexandre é mais enxuto.

    Boa sorte !


    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  rgondim 30/5/2012, 20:06

    Agradeço muito a ajuda de ambos.

    Valeu mesmo!

    Conteúdo patrocinado


    [Resolvido]Comparar Mês/Ano de duas datas Empty Re: [Resolvido]Comparar Mês/Ano de duas datas

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 14:43