Ir ao conteúdo
  • Cadastre-se

Pesquisa sql multicritério e variavel


Posts recomendados

Mais um pepino que não consigo resolver..

preciso fazer uma pesquisa multicritério via vba (banco de dados access), com um dos critérios (coluna de pendencia) variavel.

Ou seja defino a pendência, ele faz a busca na coluna relativa a esta pendência e lista todos os registros que constarem como "True" para ela. (checkbox)

 

 

MOntei o código assim, mas sei que está errado por conta da variavel..

Alguém sabe desenvolver este código por favor?

obrigada

 


Sub filtro_multi()

 On Error GoTo trata_erro
    

 Dim data_ini As Date
 Dim data_fim As Date
 
 Dim variavel As Variant
 
Dim busca_cidade As String
 Dim busca_regional As String
 Dim busca_tipo As String
 Dim busca_situacao As String
 
 Dim strString As String: strString = "[" & variavel_string & "]"

 Dim ComandoSQL As String
 
        strString = Me.txt_coluna
        busca_endereco = Me.cmb_buscaendereco
        busca_cidade = Me.cmb_buscacidade
        busca_regional = Me.cmb_buscaregional
        busca_tipo = Me.cmb_buscatipo
        busca_situacao = Me.cmb_buscasituacao
        
      
    ComandoSQL = "select * from Tabela1 where endereco like '*" & busca_endereco & "*' and "
    ComandoSQL = ComandoSQL & "cidade like '*" & busca_cidade & "*' and "
    ComandoSQL = ComandoSQL & "regional like '*" & busca_regional & "*' and "
    ComandoSQL = ComandoSQL & "tipo like '*" & busca_tipo & "*' and "
    ComandoSQL = ComandoSQL & "situacao like '*" & busca_situacao & "*' and "
    ComandoSQL = ComandoSQL & "strString like '*" & "True" & "*'"
    
    
    Call Conecta
    Set consulta = banco.OpenRecordset(ComandoSQL)
   
          On Error Resume Next
            
            
            ListBox1.Clear
    
            While Not consulta.EOF
            With Me.ListBox1
            .AddItem
            .List(linhalistbox, 0) = consulta(0)
            .List(linhalistbox, 1) = consulta(1)
            .List(linhalistbox, 2) = consulta(2)
            .List(linhalistbox, 3) = consulta(3)
            .List(linhalistbox, 4) = consulta(5)
            .List(linhalistbox, 5) = consulta(47)
            End With
            
            linhalistbox = linhalistbox + 1
            consulta.MoveNext
            Wend
            
  
    Me.lbl_registros = Me.ListBox1.ListCount
    
    Call Desconecta
    Exit Sub
    
trata_erro:
   MsgBox "OPS! Certifique-se que os valores digitados estão corretos!", vbInformation, "Erro Pesquisa"
    

End Sub
 

Link para o comentário
Compartilhar em outros sites

@basole

Consegui com este codigo:

 

 

Sub filtro_multi()

 On Error GoTo trata_erro
    

 Dim data_ini As Date
 Dim data_fim As Date
 

 Dim busca_endereco As String
 Dim busca_pendencia As String
 Dim busca_cidade As String
 Dim busca_regional As String
 Dim busca_tipo As String
 Dim busca_situacao As String
 
       Dim ComandoSQL As String
 
        busca_pendencia = Me.cmb_buscapendencia
        busca_endereco = Me.cmb_buscaendereco
        busca_cidade = Me.cmb_buscacidade
        busca_regional = Me.cmb_buscaregional
        busca_tipo = Me.cmb_buscatipo
        busca_situacao = Me.cmb_buscasituacao
  
        
    If Me.cmb_buscapendencia = "" Then

    ComandoSQL = "select * from Tabela1 where endereco like '*" & busca_endereco & "*' and "
    ComandoSQL = ComandoSQL & "Cidade like '*" & busca_cidade & "*' and "
    ComandoSQL = ComandoSQL & "Regional like '*" & busca_regional & "*' and "
    ComandoSQL = ComandoSQL & "Tipo like '*" & busca_tipo & "*' and "
    ComandoSQL = ComandoSQL & "Situacao like '*" & busca_situacao & "*' "

    Else

    ComandoSQL = "select * from Tabela1 where endereco like '*" & busca_endereco & "*' and "
    ComandoSQL = ComandoSQL & "Cidade like '*" & busca_cidade & "*' and "
    ComandoSQL = ComandoSQL & "Regional like '*" & busca_regional & "*' and "
    ComandoSQL = ComandoSQL & "Tipo like '*" & busca_tipo & "*' and "
    ComandoSQL = ComandoSQL & "Situacao like '*" & busca_situacao & "*' and  "
    ComandoSQL = ComandoSQL & busca_pendencia & " like true  "

    End If
    
    Call Conecta
    Set consulta = banco.OpenRecordset(ComandoSQL)
   
          On Error Resume Next
            
            
            ListBox1.Clear
    
            While Not consulta.EOF
            With Me.ListBox1
            .AddItem
            .List(linhalistbox, 0) = consulta(0)
            .List(linhalistbox, 1) = consulta(1)
            .List(linhalistbox, 2) = consulta(2)
            .List(linhalistbox, 3) = consulta(3)
            .List(linhalistbox, 4) = consulta(5)
            .List(linhalistbox, 5) = consulta(47)
            End With
            
            linhalistbox = linhalistbox + 1
            consulta.MoveNext
            Wend
            
  
    Me.lbl_registros = Me.ListBox1.ListCount
    
    Call Desconecta
    Exit Sub
    
trata_erro:
   MsgBox "OPS! Certifique-se que os valores digitados estão corretos!", vbInformation, "Erro Pesquisa"
    

End Sub

 

Valeu

adicionado 2 minutos depois

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...