VB6 - PESQUISA BD CONFORME INFORMAO NOS FILTROS

 Tópico anterior Próximo tópico Novo tópico

VB6 - PESQUISA BD CONFORME INFORMAO NOS FILTROS

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#490738 - 15/10/2019 14:08:48

ROBLEDO
LAJEADO
Cadast. em:Janeiro/2019


Última edição em 15/10/2019 18:02:00 por KERPLUNK

 Anexos estao visíveis somente para usuários registrados

Ol.

Tenho uma aplicao em VB6 e estou montando uma consulta em tela com filtros em textbox e Combobox para buscar no access e trazer no listview os dados conforme filtros selecionados.
Gostaria de um auxlio na parte da busca dos dados conforme filtros selecionados.

Quando filtros esto VAZIOS vou considerar como filtrar/trazer TODOS os registros

Quando algum filtro for preenchido filtrar somente o(s) preenchido(s) e trazer no listview. (PRECISO DE AJUDA AQUI)

Acredito que isso deva ser tratado na parte do WHERE da consulta, mas tambm posso estar enganado e isso deva ser realizado de outra forma. No estou encontrando a forma correta para que a pesquisa entenda para buscar somente aquele(s) filtro(s) preenchido(s) e os outros (ignorar) da pesquisa.

Anexei a tela para melhor entendimento. (Cada filtro possui uma coluna especfica na tabela BD.)




#490744 - 15/10/2019 18:39:56

FABRICIOWEB
BELO HORIZONTE
Cadast. em:Novembro/2011


Citação:
:
Ol.

Tenho uma aplicao em VB6 e estou montando uma consulta em tela com filtros em textbox e Combobox para buscar no access e trazer no listview os dados conforme filtros selecionados.
Gostaria de um auxlio na parte da busca dos dados conforme filtros selecionados.

Quando filtros esto VAZIOS vou considerar como filtrar/trazer TODOS os registros

Quando algum filtro for preenchido filtrar somente o(s) preenchido(s) e trazer no listview. (PRECISO DE AJUDA AQUI)

Acredito que isso deva ser tratado na parte do WHERE da consulta, mas tambm posso estar enganado e isso deva ser realizado de outra forma. No estou encontrando a forma correta para que a pesquisa entenda para buscar somente aquele(s) filtro(s) preenchido(s) e os outros (ignorar) da pesquisa.

Anexei a tela para melhor entendimento. (Cada filtro possui uma coluna especfica na tabela BD.)


No tenho certeza oque vou falar mas penso que vc esta montando a tela primeiro? se sim acho que vc pode estar comeando errado antes de tudo monte uma base de dados faa a estrutura recomendo vc usar um banco de dados como o mysql.

E sim tudo pode ser feito no sql



#490748 - 15/10/2019 20:56:49

ROBLEDO
LAJEADO
Cadast. em:Janeiro/2019


Ol
J tenho a aplicao rodando em rede e com banco de dados access.
Preciso liberar as consultas aos usurios, com os filtros conforme tela enviada anteriormente, porm estou com dificuldades na montagem da pesquisa.



#490753 - 15/10/2019 22:03:11

MARIOANDRADE
SANTO ANTONIO DE JESUS
Cadast. em:Abril/2012


 Anexos estao visíveis somente para usuários registrados

J pensou na possibilidade de colocar um boto para cada tipo
de busca? Talvez ficasse mais intuitivo:


Cursos de Excel e VB6:
cursoexcelvba.com.br



#490762 - 16/10/2019 08:35:26

ROBLEDO
LAJEADO
Cadast. em:Janeiro/2019


Citação:
:
J pensou na possibilidade de colocar um boto para cada tipo
de busca? Talvez ficasse mais intuitivo:


O problema da busca individual que restringe o usurio a usar somente 1 filtro por vez (o que dificulta para o usurio).
No caso em questo o usurio pode selecionar vrios filtros e realizar a busca/pesquisa em uma nica vez no banco de dados, para que demonstre os registros relacionados a todos os filtros selecionados.



#490764 - 16/10/2019 09:12:01

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
A coisa bem trabalhosa pra fazer em VBA. algo nessa linha:

dim SQL as String
Sql = []select * from minha_tabela[]
if txtCoisa1.Text <> [][] Or txtCoisa2.Text <> [][] Then []adicionar aqui todos os campos que quiser verificar se tem algo e incluir na query
    []Tem algum campo preenchido, adicionar where
     SQL = SQL & [] WHERE []
end if

if txtCoisa1.Text <> [][] then
    SQL = SQL + [] CampoNaTabela = [][] & txtCoisa1.Text & [][] AND []
end if

if txtCoisa2.Text <> [][] then
    SQL = SQL + [] CampoNaTabela = [][] & txtCoisa2.Text & [][] AND []
end if

[]tirar o ltimo []AND[]
SQL = Left(SQL, Len(SQL) - 4)

[]aqui j pode executar


_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#490769 - 16/10/2019 10:57:44

FABRICIOWEB
BELO HORIZONTE
Cadast. em:Novembro/2011


tem muito tempo que nao uso vb6 mas acho que seria tipo assim depois so voc poluir seu listview voc pode usar o click do combo

Private Sub Combo1_Click()
string texto=[][]
texto =Combo1.Text

If texto = []A PAGAR[] Then
Connect
rs.Open []SELECT * FROM seubanco de dados WHERE coluna banco de dados =[][] & texto & [][][] & []order by ordenado por[], CON, adOpenStatic, adLockOptimistic
End If
TRATA:
    


em modulo para conectar algum banco de dados

Public CON As ADODB.Connection
Public rs As ADODB.Recordset


Sub Disconnect()
On Error GoTo TrataErro
rs.Close
con.Close
TrataErro:

If Err.Number = 3265 Then
   MsgBox []Erro de dados[]
End If


Set rs = Nothing
Set con = Nothing
End Sub


Sub Connect()
On Error GoTo trato
Set CON = CreateObject([]ADODB.Connection[])
Set rs = CreateObject([]ADODB.Recordset[])
    Dim sConn As String
        sConn = []DRIVER={MySQL ODBC 3.51 Driver};[]
        sConn = sConn & []SERVER=[] & ip & [];[]
        sConn = sConn & []USER=usuario;[]
        sConn = sConn & []PWD=senha;[]
        sConn = sConn & []database=basededados[]
        CON.Open sConn    []Abre o Banco de Dados
        rs.CursorLocation = adUseClient
trato:
End Sub










#490790 - 16/10/2019 22:14:22

MARIOANDRADE
SANTO ANTONIO DE JESUS
Cadast. em:Abril/2012


Citação:
:
:
J pensou na possibilidade de colocar um boto para cada tipo
de busca? Talvez ficasse mais intuitivo:


O problema da busca individual que restringe o usurio a usar somente 1 filtro por vez (o que dificulta para o usurio).
No caso em questo o usurio pode selecionar vrios filtros e realizar a busca/pesquisa em uma nica vez no banco de dados, para que demonstre os registros relacionados a todos os filtros selecionados.

Voc poderia utilizar checkboxs ao lado de cada combobox e na opo tooltip voc colocaria
[]incluir este campo na pesquisa[] para indicar o que o usurio deseja
incluir na pesquisa, com comboboxs voc dever deixar uma linha em branco
(se estiver utilizando a opo de somente lista) para que o usurio consiga deixar
o contedo vazio.


Cursos de Excel e VB6:
cursoexcelvba.com.br



#491983 - 24/12/2019 12:29:32

ROBLEDO
LAJEADO
Cadast. em:Janeiro/2019


 Anexos estao visíveis somente para usuários registrados

Citação:
:
A coisa bem trabalhosa pra fazer em VBA. algo nessa linha:

dim SQL as String
Sql = []select * from minha_tabela[]
if txtCoisa1.Text <> [][] Or txtCoisa2.Text <> [][] Then []adicionar aqui todos os campos que quiser verificar se tem algo e incluir na query
    []Tem algum campo preenchido, adicionar where
     SQL = SQL & [] WHERE []
end if

if txtCoisa1.Text <> [][] then
    SQL = SQL + [] CampoNaTabela = [][] & txtCoisa1.Text & [][] AND []
end if

if txtCoisa2.Text <> [][] then
    SQL = SQL + [] CampoNaTabela = [][] & txtCoisa2.Text & [][] AND []
end if

[]tirar o ltimo []AND[]
SQL = Left(SQL, Len(SQL) - 4)

[]aqui j pode executar


Ol
Estive um tempo fora e estou retomando este programa para poder liberar aos usurios, porm no momento da execuo est me apresentando o erro []Run-time error 3704: Operao no permitida quando o objeto est fechado[] e direciona no comando []Do Until rs.EOF[] (pgina 2 do anexo). Em anexo meu cdigo completo para poderem visualizar e se possvel auxiliar na soluo.



#491984 - 24/12/2019 12:43:50

FUTURA
.
Cadast. em:Maio/2004


Última edição em 24/12/2019 12:46:06 por FUTURA

Isso muito simples de fazer, inclusive, se vc vai usar filtros, independente da linguagem, vc tem q verificar se o filtro esta em uso ou no.. Vc comea com a string  sql padro buscando os campos, e abaixo vai checando os filtros com ajuda de IFs ou CASEs, e aplicando..

sql=[]select campoa, campob,campoc......[]

if filtro1.text <> empty then
sql = sql & [] and tabela1.campoa = tabela2.campoc []
endif

if filtro2.text <. empty then
sql = sql & [] and tabela1.campod = tabela3.campoa []
endif

No tem segredo isso, para concatenar, vc coloca o AND sempre na string seguinte e no no final da anterior, assim no ter que tratar.
A mensagem de objeto fechado, pq seu recordset no abriu, debuga o cdigo, q vc vai achar, alm de fazer tratamentos claro..

IF RS.eof then
msgbox([]consulta sem sucesso...[])
endif






#491987 - 25/12/2019 19:50:32

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


na minha humilde opinio faria mais ou menos assim:
dim STR as string

str= []SELECT Campo1, Campo2, Campo3 FROM Tabela where Campo1 LIKE[]*[] & txtcampo1.text & [][] AND Campo2 LIKE []*[] & ComboCampo2.text & [][] AND Campo3 LIKE []*[] & ComboCampo3.text & [][];[]

Detalhe: o like s funciona com campos texto

O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário