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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Refinar pesquisa usando SELECT
ATS
OURINHOS
SP - BRASIL
Postada em 04/01/2005 10:03 hs            
Em um form tenho três ComboBox e uma TextBox, como faço para efetuar uma pesquisa usando estes quantro controles, sendo que entre os quatro pode-se preencher apenas um para efetuar a pesquisa ou os quatro, conforme o usuário seleciona os controles vai refinando a pesquisa.
Fiz esta consulta funciona bem, mas se um dos controles não estiver preenchido da erro.
 
rstProdutos.Open "SELECT tblCadProd.CodigoProduto, tblCadProd.DescricaoProduto, tblCadProd.GrauINPM, tblCadProd.Setor, tblCadProd.Fabricante, tblCadProd.Fornecedor FROM tblCadProd WHERE (((tblCadProd.DescricaoProduto) '" & cboProduto.ItemData(cboProduto.ListIndex) & "') AND ((tblCadProd.Setor) '" & cboSetor.ItemData(cboSetor.ListIndex) & "') AND ((tblCadProd.Fabricante) '" & txtFabricante & "') AND ((tblCadProd.Fornecedor) '" & cboFornecedor.ItemData(cboFornecedor.ListIndex) & "'));", dbProdutos, adOpenKeyset, adLockPessimistic, adCmdText
     
Gelson Porto
Pontos: 2843 Pontos: 2843 Pontos: 2843
RIO DE JANEIRO
RJ - BRASIL
Postada em 04/01/2005 11:10 hs            
ATS, bom dia..
 
        Monte a sua instrução sql em uma variavel e depois execute.
        Assim voce terá liberdade para trabalhar as opções do usuario.
 
       StrSql = "SELECT tblCadProd.CodigoProduto, tblCadProd.DescricaoProduto, tblCadProd.GrauINPM, tblCadProd.Setor, tblCadProd.Fabricante, tblCadProd.Fornecedor FROM tblCadProd WHERE (((tblCadProd.DescricaoProduto) '" & cboProduto.ItemData(cboProduto.ListIndex) & "') AND ((tblCadProd.Setor) '" & cboSetor.ItemData(cboSetor.ListIndex) & "') AND ((tblCadProd.Fabricante) '" & txtFabricante & "') AND ((tblCadProd.Fornecedor) '" & cboFornecedor.ItemData(cboFornecedor.ListIndex) & "'));",
 
 
rstProdutos.Open  StrSql, dbProdutos, adOpenKeyset, adLockPessimistic, adCmdText
     
ATS
OURINHOS
SP - BRASIL
Postada em 05/01/2005 08:00 hs            
Não entendi, tambem posso fazer essa validação nos proprios controles se é isso que você quer dizer.
     
Gelson Porto
Pontos: 2843 Pontos: 2843 Pontos: 2843
RIO DE JANEIRO
RJ - BRASIL
Postada em 05/01/2005 08:16 hs            
 ATS, bom dia..
         Veja se consegui me expressar melhor com este exemplo.
         O if voce montar conforme a sua logica, testanto o que o usuario selecionou.
         No final voce tem a instrução sql conforme o desejo do usuario.
 
       StrSql = "SELECT tblCadProd.CodigoProduto, tblCadProd.DescricaoProduto, "
       Strsql = Strsql & "tblCadProd.GrauINPM, tblCadProd.Setor, tblCadProd.Fabricante, "
       Strsql = Strsql & "tblCadProd.Fornecedor FROM tblCadProd "
       Strsql = Strsql & " WHERE (((tblCadProd.DescricaoProduto) '" & cboProduto.ItemData(cboProduto.ListIndex) & "') "
        IF Selecionou Setor Then
        Strsql = Strsql & " cboAND ((tblCadProd.Setor) '" & cboSetor.ItemData(cboSetor.ListIndex) & ") "
        IF Selecionou Fabricante Then
            Strsql = Strsql & "   AND ((tblCadProd.Fabricante) '" & txtFabricante & "')"
        IF Selecionou Fornecedor Then
            Strsql = Strsql & " AND ((tblCadProd.Fornecedor) '" & cboFornecedor.ItemData(cboFornecedor.ListIndex) & "'));",
 
     
ATS
OURINHOS
SP - BRASIL
Postada em 05/01/2005 10:25 hs            
Agradeço pela explicação Gelson é que pensei que tinha um outro jeito mais enxuto de se fazer isso ao inves de ter que ficar verificando o que o usuário selecionou com IF pois isso vai ficar muito grande por que o usuário pode fazer vários tipos de seleção como:
 
Selecionar somente o Produto
Selecionar o Produto e o Setor
Selecionar o Produto e o Fabricante
Selecionar o Fabricante e Setor
Selecionar o Fornecedor o Produto e o Setor
Selecionar o Produto o Setor o Fabricante e o Fornecedor
 
E assim por diante são varias combinações usando estes quatro controles mas agradeço sua atenção, vou fazer desta forma mesmo.
 
Um Abraço
Alcir
TÓPICO EDITADO
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

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

HTML DESLIGADO

     
 VOLTAR

  



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