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

    DCount com mais de um critério

    avatar
    Blueace
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 23/11/2012

    DCount com mais de um critério Empty DCount com mais de um critério

    Mensagem  Blueace 29/5/2014, 12:15

    Prezados,

    Tenho um formulário com os campos 'servidor', 'data inicial' e 'data final', os quais indicam qual servidor estará em viagem e em qual período.
    Desejo que, ao incluir um novo registro, o sistema emita uma mensagem informando que servidor está recebendo diárias no período informado.

    Fiz o seguinte código:

    Private Sub txtDataFinal_Exit(Cancel As Integer)
    If DCount("*", "Base_Dados", "[Data_Inicial] >=#" & Format(Me.txtDataInicial, "dd/mm/yyyy") & "#" & " and [Data_Final] <=#" & Format(Me.txtDataFinal, "dd/mm/yyyy") & "#" & " And Servidor='" & Me.Servidor & "'") > 0 Then
    MsgBox "Servidor já está recebendo diárias no período informado!", vbCritical, "Atenção"
    Me.Undo
    Else
    Exit Sub
    End If
    End Sub

    No entanto, não sei onde está o erro, pois o sistema critica todo novo registro com o mesmo servidor, mesmo se o período de viagem é diferente.

    Agradeço a ajuda dos colegas.
    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

    DCount com mais de um critério Empty Re: DCount com mais de um critério

    Mensagem  Alexandre Neves 29/5/2014, 12:26

    Boa tarde,
    Abriu 2 temas iguais, provavelmente por lapso. Assim, eliminei-lhe o repetido
    Sobre a sua dúvida, não dá para perceber o erro na sintaxe. Coloque cada critério em separado e, funcionando, vá-os agregando até aparecer o erro


    .................................................................................
    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
    avatar
    Blueace
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 23/11/2012

    DCount com mais de um critério Empty Re: DCount com mais de um critério

    Mensagem  Blueace 29/5/2014, 13:04

    Olá Alexandre,

    Fiz o que você sugeriu e os critérios, individualmente, funcionam perfeitamente, mas em conjunto eles dão um resultado incrível:

    Quando incluo um novo registro, com o mesmo servidor e o período de viagem diferente, ele acusa a mensagem. No entanto, quando o período coinscide, ele não exibe mensagem alguma. Ou seja, o código está fazendo justamente o contrário do que eu quero: exibindo a mensagem quando o período não coincide e ocultando a mensagem quando o período da viagem coincide.

    Tem alguma idéia como posso corrigir isso?
    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

    DCount com mais de um critério Empty Re: DCount com mais de um critério

    Mensagem  Alexandre Neves 29/5/2014, 13:06

    se individualmente funcionam
    If DCount("*", "Base_Dados", "Data_Inicial>=#" & Format(Me.txtDataInicial, "dd/mm/yyyy") & "# and Data_Final<=#" & Format(Me.txtDataFinal, "dd/mm/yyyy") & "# And Servidor='" & Me.Servidor & "'") > 0 Then


    .................................................................................
    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
    avatar
    Blueace
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 23/11/2012

    DCount com mais de um critério Empty Re: DCount com mais de um critério

    Mensagem  Blueace 29/5/2014, 13:36

    Olá Alexandre,

    Obrigado pelo auxílio, mas a fórmula ainda dá o resultado invertido.
    Além disso, tenho que apurar os critérios, pois o servidor pode começar antes e terminar no meio, ou começar no meio do período e terminar depois, situação não prevista no código.

    Dessa forma, assim que apurar os critérios volto a publicar, mesmo se conseguir a solução.

    Obrigado.
    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

    DCount com mais de um critério Empty Re: DCount com mais de um critério

    Mensagem  Alexandre Neves 29/5/2014, 14:36

    Então, deverá ser
    If DCount("*", "Base_Dados", "((Data_Inicial<=#" & Format(Me.txtDataInicial, "dd/mm/yyyy") & "# and Data_Final>=#" & Format(Me.txtDataInicial, "dd/mm/yyyy") & "#) or (Data_Inicial<=#" & Format(Me.txtDataFinal, "dd/mm/yyyy") & "# and Data_Final>=#" & Format(Me.txtDataFinal, "dd/mm/yyyy") & "#)) And Servidor='" & Me.Servidor & "'") > 0 Then

    Pode ter que alterar o formato das datas


    .................................................................................
    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
    avatar
    Blueace
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 23/11/2012

    DCount com mais de um critério Empty Re: DCount com mais de um critério

    Mensagem  Blueace 2/6/2014, 16:42

    Alexandre,

    Isolei apenas o primeiro critério, mas a fórmula funciona apenas entre datas com dias com dois dígitos (do dia 10 até 31, ok; do dia 1 ao 9, no início ou no final, não funciona). Creio que o erro esteja na formatação das datas.

    Seria possível, nesse caso, converter no cálculo as datas em seu correspondente valor numérico?

    Por exemplo, seria possível utilizar na fórmula algo como CDbl(DateValue([Data_Inicial)) e/ou CDbl(DateValue(Me.txtDataInicial)) ?

    Obrigado novamente
    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

    DCount com mais de um critério Empty Re: DCount com mais de um critério

    Mensagem  Alexandre Neves 2/6/2014, 16:51

    Boa noite,
    Os campos de data estão como tipo data? se sim, deverá funcionar


    .................................................................................
    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
    avatar
    Blueace
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 23/11/2012

    DCount com mais de um critério Empty Re: DCount com mais de um critério

    Mensagem  Blueace 2/6/2014, 17:33

    Alexandre, boa noite.

    Sim, estão no formato data. Mas como ficaria o código?
    Fiz um aqui isolando o primeiro critério, para testes, mas deu erro no apóstrofo da condição Servidor (diz: era esperada expressão):

    If DCount("*", "Base_Dados", CDbl(DateValue([Data_Inicial])) <= CDbl(DateValue(Me.txtDataInicial)) And CDbl(DateValue([Data_Final])) >= CDbl(DateValue(Me.txtDataFinal)) And [Servidor]='" & Me.Servidor & "'") > 0
    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

    DCount com mais de um critério Empty Re: DCount com mais de um critério

    Mensagem  Alexandre Neves 3/6/2014, 13:17

    Boa tarde,
    A formatação da data pode ser "mm-dd-yyyy" ou "dd-mm-yyyy"
    Veja se funciona bem em cada critério
    If DCount("*", "Base_Dados", "Data_Inicial<=#" & Format(Me.txtDataInicial, "dd/mm/yyyy") & "# and Data_Final>=#" & Format(Me.txtDataInicial, "dd/mm/yyyy") & "#") > 0 Then

    If DCount("*", "Base_Dados", "Data_Inicial<=#" & Format(Me.txtDataFinal, "dd/mm/yyyy") & "# and Data_Final>=#" & Format(Me.txtDataFinal, "dd/mm/yyyy") & "#") > 0 Then

    If DCount("*", "Base_Dados", "Servidor='" & Me.Servidor & "'") > 0 Then


    .................................................................................
    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

    Conteúdo patrocinado


    DCount com mais de um critério Empty Re: DCount com mais de um critério

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 07:14