USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Consulta com vários combos aleatórios
Cid
SÃO PAULO
SP - BRASIL
Postada em 21/08/2006 09:21 hs            
Bom dia pessoal!
 
Tenho um form com 6 combos e preciso fazer uma consulta usando apenas alguns ou todos, ou apenas 1.
 
Se eu usar uma condição If e ElseIf para verificar os combos preenchidos e vazios vai ficar muito grande.
 
Alguém tem uma idéia de como eu posso fazer isso de um modo mais simples?
 
Agradeço desde já a atenção de todos.
 
Abraços.
     
Cid
SÃO PAULO
SP - BRASIL
Postada em 21/08/2006 10:19 hs            
Pessoal
 
Estou usando este código:
 
Private Sub cmdTestar_Click()
 
Dim strFiltro
Dim strSql
If cmbNome <> "" Then
  strFiltro = strFiltro + "NOME_EMPRESA='" & cmbNome & "'"
End If
If cmbCNPJ <> "" Then
  strFiltro = strFiltro + "CNPJ = '" & cmbCNPJ & "'"
End If
If cmbEnd <> "" Then
  strFiltro = strFiltro + " ENDEREÇO = '" & cmbEnd & "'"
End If
If strFiltro <> "" Then
strSql = "Select * From [Geral Sem Ativa] Where" + strFiltro
txtExiste = NÚMERO
Else
strSql = "Select * From [Geral Sem Ativa] "
txtExiste = "Não"
End If
 
End Sub
Mas não está funcionando. Se eu seleciono qualquer ítem das combos, ele preenche o txtExiste com o campo NÚMERO do 1º registro da tabela.
 
Alguém sabe o que está faltando?
     
Cardoso G
Pontos: 2843 Pontos: 2843
PATOS DE MINAS
MG - BRASIL
Postada em 21/08/2006 11:40 hs            
cid, vc tem que colocar a clausula AND ai , ta faltando
If cmbNome <> "" Then
  strFiltro = strFiltro + "NOME_EMPRESA='" & cmbNome & "'"
End If
If cmbCNPJ <> "" Then
  strFiltro = strFiltro + " AND CNPJ = '" & cmbCNPJ & "'"
End If
If cmbEnd <> "" Then
  strFiltro = strFiltro + " AND ENDEREÇO = '" & cmbEnd & "'"
End If
If strFiltro <> "" Then
strSql = "Select * From [Geral Sem Ativa] Where" + strFiltro
txtExiste = NÚMERO
Else
strSql = "Select * From [Geral Sem Ativa] "
txtExiste = "Não"
End If
 
     
Cid
SÃO PAULO
SP - BRASIL
Postada em 21/08/2006 12:03 hs            
Valeu Cardoso
 
Mas ainda não está funcionando.
 
Ele não está fazendo o filtro.
 
Está selecionando o 1º registro da tabela.
 
Mesmo se eu preencher os combos com dados que não existem, ele trás o 1º registro.
     
Cid
não registrado
Postada em 21/08/2006 18:36 hs   
Alterei o código assim:
 
Dim strFiltro
Dim strSql
If cmbNome <> "" Then
  strFiltro = strFiltro + "FAVORECIDO = '" & cmbNome & "'"
End If
If cmbCNPJ <> "" Then
  strFiltro = strFiltro + " AND " + "CNPJ = '" & cmbCNPJ & "'"
End If
If cmbBanco <> "" Then
  strFiltro = strFiltro + " AND " + "BANCO = '" & cmbBanco & "'"
End If
If strFiltro <> "" Then
    Set Dados_Gerais = db.OpenRecordset("Select * From Dados_Gerais Where " & strFiltro)
    If Not Dados_Gerais.EOF Then
        Dados_Gerais.MoveMin
        txtExiste = Dados_Gerais!CONTA
    End If
   
Else
strSql = "Select * From Dados_Gerais"
txtExiste = "Não"
End If
 
O problema agora é o seguinte:
Se eu seleciono os 3 combos, ou só o 1º, ou o 1º e o 2º, funciona bem.
Mas, se eu não seleciono o 1º, dá erro. Fica sobrando o AND na consulta.
 
Alguém tem alguma outra idéia?
 
Obrigado a todos.
     
Daniel
Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 22/08/2006 11:20 hs            
Inclua a Linha em Negrito, que vai funcionar
Dim strFiltro
Dim strSql
If cmbNome <> "" Then
  strFiltro = strFiltro + "FAVORECIDO = '" & cmbNome & "'"
End If
If cmbCNPJ <> "" Then
  strFiltro = strFiltro + " AND " + "CNPJ = '" & cmbCNPJ & "'"
End If
If cmbBanco <> "" Then
  strFiltro = strFiltro + " AND " + "BANCO = '" & cmbBanco & "'"
End If
if Left(strFiltro,5)=" AND " then strFiltro = right(strFiltro,len(strFiltro)-5)
If strFiltro <> "" Then
    Set Dados_Gerais = db.OpenRecordset("Select * From Dados_Gerais Where " & strFiltro)
    If Not Dados_Gerais.EOF Then
        Dados_Gerais.MoveMin
        txtExiste = Dados_Gerais!CONTA
    End If
   
Else
strSql = "Select * From Dados_Gerais"
txtExiste = "Não"
End If

dsmn
     
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página