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

    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 : 372
    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 : 1446
    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?


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.

    mfmaiafilho gosta desta mensagem

    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 372
    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 : 1446
    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


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 372
    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 : 372
    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 : 372
    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 : 1446
    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


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 372
    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 : 1446
    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




    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 372
    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 : 1446
    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 : 372
    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: 13/6/2021, 00:44