Tópico anterior Próximo tópico Novo tópico
VB / VBA
#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 aplicação 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 auxílio na parte da busca dos dados conforme filtros selecionados. Quando filtros estão 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 também posso estar enganado e isso deva ser realizado de outra forma. Não 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 específica na tabela BD.) |
|||
#490744 - 15/10/2019 18:39:56 | ||||
![]() FABRICIOWEB BELO HORIZONTE Cadast. em:Novembro/2011 ![]() |
Citação: : Olá. Tenho uma aplicação 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 auxílio na parte da busca dos dados conforme filtros selecionados. Quando filtros estão 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 também posso estar enganado e isso deva ser realizado de outra forma. Não 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 específica na tabela BD.) Não tenho certeza oque vou falar mas penso que vc esta montando a tela primeiro? se sim acho que vc pode estar começando errado antes de tudo monte uma base de dados faça 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 aplicação rodando em rede e com banco de dados access. Preciso liberar as consultas aos usuários, com os filtros conforme tela enviada anteriormente, porém 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 botão para cada tipode 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 botão para cada tipo de busca? Talvez ficasse mais intuitivo: O problema da busca individual é que restringe o usuário a usar somente 1 filtro por vez (o que dificulta para o usuário). No caso em questão o usuário pode selecionar vários 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 ![]() |
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 Oráculo! 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 botão para cada tipo de busca? Talvez ficasse mais intuitivo: O problema da busca individual é que restringe o usuário a usar somente 1 filtro por vez (o que dificulta para o usuário). No caso em questão o usuário pode selecionar vários 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 checkbox´s ao lado de cada combobox e na opção tooltip você colocaria [Ô]incluir este campo na pesquisa[Ô] para indicar o que o usuário deseja incluir na pesquisa, com combobox´s você deverá deixar uma linha em branco (se estiver utilizando a opção de somente lista) para que o usuário consiga deixar o conteúdo 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 usuários, porém no momento da execução está me apresentando o erro [Ô]Run-time error 3704: Operação não permitida quando o objeto está fechado[Ô] e direciona no comando [Ô]Do Until rs.EOF[Ô] (página 2 do anexo). Em anexo meu código completo para poderem visualizar e se possível auxiliar na solução. |
|||
#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 não.. Vc começa com a string sql padrão 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 Não tem segredo isso, para concatenar, vc coloca o AND sempre na string seguinte e não no final da anterior, assim não terá que tratar. A mensagem de objeto fechado, é pq seu recordset não abriu, debuga o código, q vc vai achar, além 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 opinião 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