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

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 410
    Registrado : 02/08/2018

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  mfmaiafilho 7/5/2021, 22:06

    Boa tarde Srs.
    Estou tentando fazer um filtro em série/cascata em vba, eu testei alguns casos até que funciona direito, porém não está funcionando corretamente pra "Sim/Não" e "Entre DataInicio E DataFim", estou usando Backend SQL SERVER

    para o campo data usei o campo Datetime que é a mesma coisa de Data Geral acredito eu
    para o campo Sim/Não estou usando o campo tipo BIT

    Alguém pode me ajudar? segue o código abaixo:

    Código:
    Option Explicit
    Public strCondicao$

    Private Sub FiltrarFolhaDados()
    Dim strWhere As String
       
        If Nz(Me.ID, "") <> "" Then
            strWhere = strWhere & "[ID_UNIDADE] LIKE '*" & Me.ID & "*' AND "
        End If
       
        If Nz(Me.nome, "") <> "" Then
            strWhere = strWhere & "[UNIDADE] LIKE '*" & Me.nome & "*' AND "
        End If
       
    [color=#ff3300]    If Nz(Me.qd_situacao.Value = 2) Then
            strWhere = strWhere & "[DESATIVADO]= True AND "
        End If

        If Nz(Me.qd_situacao.Value = 3) Then
            strWhere = strWhere & "[DESATIVADO]= False AND "
        End If[/color]
       
    [color=#ff3300]'    If Nz(Me.dhcad_inicio, "") And Nz(Me.dhcad_fim, "") <> "" Then
    '        strWhere = strWhere & "[DHCAD] Between #" & Format(Me!dhcad_inicio, "mm/dd/yyyy") & "# AND #" & Format(Me.dhcad_fim, "mm/dd/yyyy") & "#"
    '    End If[/color]
       
        ' aplicar filtros
        If strWhere <> "" Then
            strWhere = Left(strWhere, Len(strWhere) - 5)
            Me.FolhaDados.Form.Filter = strWhere
            Me.FolhaDados.Form.FilterOn = True
            strCondicao = strWhere
        Else
            Me.FolhaDados.Form.Filter = ""
            Me.FolhaDados.Form.Filter = False
            strCondicao = ""
        End If
    End Sub
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2766
    Registrado : 13/12/2016

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  Alexandre Fim 7/5/2021, 22:27

    Boa tarde,

    Vc está usando tabelas vinculadas com o SQL Server?


    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Setinf11
    Sistemas e Tecnologia Ltda

    mfmaiafilho gosta desta mensagem

    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 410
    Registrado : 02/08/2018

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  mfmaiafilho 8/5/2021, 01:42

    Boa noite Alexandre, exatamente, as tabelas estão vinculadas ao SQL Server, isso interfere algo?

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Tabela10
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2766
    Registrado : 13/12/2016

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  Alexandre Fim 8/5/2021, 02:30

    Se está vinculado, a sintaxe do VBA funciona.
    Se fosse desvinculado, a instrução na funcionária.

    Veja essas marcações "[color=#ff3300]" HTML que tem na instrução.
    Retire-as..

    []' s

    FIM


    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Setinf11
    Sistemas e Tecnologia Ltda
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 410
    Registrado : 02/08/2018

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  mfmaiafilho 8/5/2021, 03:12

    Amigo, os formulários são desvinculados, o de pesquisa, etc, o código acima corretamente é o que está abaixo, é pq tentei grifar de vermelho onde se encontra os filtros que não estou conseguindo fazer o between e de false e true

    Option Explicit
    Public strCondicao$

    Private Sub FiltrarFolhaDados()
    Dim strWhere As String

    If Nz(Me.ID, "") <> "" Then
    strWhere = strWhere & "[ID_UNIDADE] LIKE '*" & Me.ID & "*' AND "
    End If

    If Nz(Me.nome, "") <> "" Then
    strWhere = strWhere & "[UNIDADE] LIKE '*" & Me.nome & "*' AND "
    End If

    If Nz(Me.qd_situacao.Value = 2) Then
    strWhere = strWhere & "[DESATIVADO]= True AND "
    End If

    If Nz(Me.qd_situacao.Value = 3) Then
    strWhere = strWhere & "[DESATIVADO]= False AND "
    End If


    ' If Nz(Me.dhcad_inicio, "") And Nz(Me.dhcad_fim, "") <> "" Then
    ' strWhere = strWhere & "[DHCAD] Between #" & Format(Me!dhcad_inicio, "mm/dd/yyyy") & "# AND #" & Format(Me.dhcad_fim, "mm/dd/yyyy") & "#"
    ' End If


    ' aplicar filtros
    If strWhere <> "" Then
    strWhere = Left(strWhere, Len(strWhere) - 5)
    Me.FolhaDados.Form.Filter = strWhere
    Me.FolhaDados.Form.FilterOn = True
    strCondicao = strWhere
    Else
    Me.FolhaDados.Form.Filter = ""
    Me.FolhaDados.Form.Filter = False
    strCondicao = ""
    End If
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 410
    Registrado : 02/08/2018

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  mfmaiafilho 9/5/2021, 19:26

    A função BIT Sim/Não já consegui ajustar,

    faltava na hora de criar a tabela colocar BIT DEFAULT VALUE 0, pra não ficar vazio, em SQL server o 0 é mesmo que FALSE, então quando colocar o filtro False ele filtra direitinho Wink

    Agora só faltou o de intervalos de data

    If Nz(Me.dhcad_inicio, "") <> "" Then
    strWhere = strWhere & "[DHCAD] between #" & Me.dhcad_inicio & "# and #" & Me.dhcad_fim & "#"
    End If
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 410
    Registrado : 02/08/2018

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  mfmaiafilho 10/5/2021, 01:10

    alguém pode ajudar ?

    já vi alguns tópicos relacionados mas nada me ajudou, sempre dá Tipos incompatíveis.
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2766
    Registrado : 13/12/2016

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  Alexandre Fim 10/5/2021, 03:50

    Olá,

    O SQL Server não utiliza "#" para datas e elas precisam estar formatadas também.

    Segue o código:
    Código:


    strWhere = strWhere & " [DHCAD] BETWEEN '" & Format(Me.dhcad_inicio, "yyyy-dd-mm") & "' AND'" & Format(Me.dhcad_fim, "yyyy-dd-mm") & "'"


    Acredito que irá funcionar.

    Boa sorte

    []'s

    FIM


    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Setinf11
    Sistemas e Tecnologia Ltda
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 410
    Registrado : 02/08/2018

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  mfmaiafilho 10/5/2021, 12:53

    Bom dia Alexandre,
    não funcionou o Filtro, o campo que uso em SQL Server é datetime, porém eu digitei manualmente 01/01/2021 as datas no Formato DD/MM/YYYY pra tentar fazer o filtro.

    o seu filtro não dá erros porém ele trás todos os registros, não filtra =/


    Código:
        ' filtrar por data de cadastro
        If Nz(Me.dhcad_inicio, "") <> "" Then
            strWhere = strWhere & " [DHCAD] BETWEEN '" & Format(Me.dhcad_inicio, "dd-mm-yyyy") & "' AND'" & Format(Me.dhcad_fim, "dd-mm-yyyy") & "'"
        End If
       
        ' filtrar por data de alteração
       
        ' aplicar filtros
        If strWhere <> "" Then
            strWhere = Left(strWhere, Len(strWhere) - 5)
            Me.FolhaDados.Form.Filter = strWhere
            Me.FolhaDados.Form.FilterOn = True
            strCondicao = strWhere
        Else
            Me.FolhaDados.Form.Filter = ""
            Me.FolhaDados.Form.Filter = False
            strCondicao = ""
        End If
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2766
    Registrado : 13/12/2016

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  Alexandre Fim 10/5/2021, 13:56

    Olá,

    Vc usa formulários com campos não acoplados mas as tabelas são vinculadas ao SQL, certo?

    Quando vc concatena uma Instrução SQL, é necessário informar um "ESPAÇO" depois do " & ""


    Código:


        If Nz(Me.ID, "") <> "" Then
            strWhere = strWhere & " [ID_UNIDADE] LIKE '*" & Me.ID & "*' AND "
        End If
       
        If Nz(Me.nome, "") <> "" Then
            strWhere = strWhere & " [UNIDADE] LIKE '*" & Me.nome & "*' AND "
        End If
       
        If Nz(Me.qd_situacao.Value = 2) Then
            strWhere = strWhere & " [DESATIVADO]= True AND "
        End If
       
        If Nz(Me.qd_situacao.Value = 3) Then
            strWhere = strWhere & " [DESATIVADO]= False AND "
        End If
       
        If Nz(Me.dhcad_inicio, "") <> "" And Nz(Me.dhcad_fim, "") <> "" Then
            strWhere = strWhere & " [DHCAD] Between #" & Format(Me!dhcad_inicio, "mm/dd/yyyy") & "# "
            strWhere = strWhere & "            AND #" & Format(Me.dhcad_fim, "mm/dd/yyyy") & "#"
        End If
       
        ' aplicar filtros
        If strWhere <> "" Then
            strWhere = Left(strWhere, Len(strWhere) - 5)
            Me.FolhaDados.Form.Filter = strWhere
            Me.FolhaDados.Form.FilterOn = True
            strCondicao = strWhere
        Else
            Me.FolhaDados.Form.Filter = ""
            Me.FolhaDados.Form.Filter = False
            strCondicao = ""
        End If




    Para entrar nesta condição, é necessário que a Me.dhcad_inicio esteja na mesma condição da Me.dhcad_fim.
    E não estavam.

    Incorreto:

    If Nz(Me.dhcad_inicio, "") And Nz(Me.dhcad_fim, "") <> "" Then
    strWhere = strWhere & " [DHCAD] Between #" & Format(Me!dhcad_inicio, "mm/dd/yyyy") & "# "
    strWhere = strWhere & " AND #" & Format(Me.dhcad_fim, "mm/dd/yyyy") & "#"
    End If




    Correto:

    If Nz(Me.dhcad_inicio, "") <> "" And Nz(Me.dhcad_fim, "") <> "" Then
    strWhere = strWhere & " [DHCAD] Between #" & Format(Me!dhcad_inicio, "mm/dd/yyyy") & "# "
    strWhere = strWhere & " AND #" & Format(Me.dhcad_fim, "mm/dd/yyyy") & "#"
    End If




    Sem testar a instrução também fica difícil, mas veja se funciona.

    []'s

    FIM




    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Setinf11
    Sistemas e Tecnologia Ltda
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 410
    Registrado : 02/08/2018

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  mfmaiafilho 10/5/2021, 14:23

    Alexandre, acho que ainda não é =/

    o ruim é que não dá pra enviar o projeto pois é vinculado ao Banco SQL, você tem teamviewer ou Anydesk ?

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Filtro10

    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2766
    Registrado : 13/12/2016

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  Alexandre Fim 10/5/2021, 15:00

    Tenho AnyDesk..

    Me chama no privado.

    Valeu

    mfmaiafilho gosta desta mensagem

    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 410
    Registrado : 02/08/2018

    Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também Empty Re: Função Filtrar com BETWEEN incorreto, e com campos "SIM/NÃO" incorretos também

    Mensagem  mfmaiafilho 10/5/2021, 15:53

    Alexandre, obrigado! Já te enviei via email

      Data/hora atual: 1/2/2023, 06:10