VBA Express Forum  




Go Back   VBA Express Forum > VBA Code & Other Help > SQL
     Feedback     
Register FAQ Members Arcade Knowledge Base Training Articles Consulting

Reply
 
Thread Tools Display Modes
Old 11-12-2011, 08:50 PM   #1
lipse

 
Joined: Oct 2011
Posts: 10
Kb Entries: 0
Articles: 0
Database Design for Multiple Filters

Hi Guys, Me Again.
First of All, thanks in advance for any help.

Im doing a userform with 6 comboboxes.
These box are populated in a auxiliar spreadsheet.
When user Select a option in Combobox1, i use Change event to call a method passing a query (string) as parameter. That method applies the filter in database, and call other method to recalculate all values in spreadsheet.

At this point, everything's is fine. When user select first filter in combo 1, i apply. When select filter in combo2, apply using the previous filtered data (used in combo1)... and go...

My problem is, all combo boxes have an option to disable the specific filter (Disable the filter for specific combobox), so im thinking how ill do that... i have no ideia, anyone knows the best way? Im thinking about store all filters and pass all filters in every method call, following this idea i dont know if it solve my problem. Any suggestions? Ideas?

Again, thanks in advance.
Sorry about my English (i dont speak english)

Local Time: 12:56 PM
Local Date: 05-20-2013
Location:

 
Reply With Quote Top
Old 11-14-2011, 01:40 PM   #2
Benzadeus
 
Benzadeus's Avatar

 
Joined: Dec 2008
Posts: 267
Kb Entries: 0
Articles: 0
Olá,

Seria melhor você utilizar filtro avançado ao invés de, simplesmente, um filtro.
Você sabe usar filtro avançado? O Excel tem uma ajuda boa de como usá-la.

---

Instead of using filter method, you should use advanced filter.


-
Regards,

Felipe Costa Gualberto
http://www.ambienteoffice.com.br

Local Time: 06:56 PM
Local Date: 05-20-2013
Location:

 
Reply With Quote Top
Old 11-14-2011, 08:09 PM   #3
lipse

 
Joined: Oct 2011
Posts: 10
Kb Entries: 0
Articles: 0
Benzadeus, Obrigado pela resposta.
O jeito que dei foi aplicar o filtro sempre mesmo, tenho 6 combo boxes, armazeno a query de cada uma num vetor de 6 posições, quando executa o evento change eu chamo a função que calcula e verifico em cada posição do vetor se a string não é nula (se existe query, ou seja, existe filtro) se não for nula eu filtro, se não passo para a próxima. Funcionou bem, fica a dica....

Obrigado novamente pela resposta.

Local Time: 12:56 PM
Local Date: 05-20-2013
Location:

 
Reply With Quote Top
Old 11-15-2011, 05:04 AM   #4
Benzadeus
 
Benzadeus's Avatar

 
Joined: Dec 2008
Posts: 267
Kb Entries: 0
Articles: 0
OK. Vale a pena eu compartilhar a dica:
Normalmente, o caminho da evolução de programação dos desenvolvedores de sistemas VBA em Excel segue o caminho Filtro - Filtro Avançado - SQL. Você poderia começar a experimentar usar o SQL, que tal?
É necessário criar uma cadeia de conexão com o servidor (explicado no link a seguir), o cabeçalho da tabela deve-se iniciar na célula A1, e a instrução SQL pode ser do tipo:
SELECT nome, endereço, idade
FROM banco
WHERE nome='Feli%' AND idade=22
(strings ficam entre aspas simples e números foram de aspas simples. caracteres coringas é o símbolo %)
http://www.ambienteoffice.com.br/excel/manipular_uma_pasta_de_trabalho_atraves_de_uma_conexao_ado/


-
Regards,

Felipe Costa Gualberto
http://www.ambienteoffice.com.br

Local Time: 06:56 PM
Local Date: 05-20-2013
Location:

 
Reply With Quote Top
Old 11-15-2011, 05:25 AM   #5
lipse

 
Joined: Oct 2011
Posts: 10
Kb Entries: 0
Articles: 0
Obrigado pela resposta amigo, então na verdade foi assim mesmo que eu fiz.. tipo, eu tenho uma planilha com 26 colunas, sendo que uma delas é uma data (ano e mes no formato YYYYMM). Eu aplico um autofiltro nessa coluna para pegar cada data especifica, copio essa planilha filtrada para outra, e aplico as query's (usando SQL) nessa planilha. O meu problema era a questão de interação entre os filtros, quando haviam multiplas seleções, o jeito que dei foi reaplicar as query's sempre.

Obrigado pelo link, não tinha achado nada parecido na internet dessa qualidade ainda, se tiver mais coisas interessantes, poste!

Aproveitando o interesse mútuo, existe alguma maneira de atualizar o "Text" de um Combobox sem disparar o evento Change?

Grato.

Local Time: 12:56 PM
Local Date: 05-20-2013
Location:

 
Reply With Quote Top
Old 11-16-2011, 02:39 AM   #6
Benzadeus
 
Benzadeus's Avatar

 
Joined: Dec 2008
Posts: 267
Kb Entries: 0
Articles: 0
Obrigado pelo link. Você pode assinar o RSS do site para obter novidades.

Em relação ao ComboBox, não é possível fazer o que deseja diretamente, no entanto, há um traquejo simples. Use um código como:

VBA:
Dim blEventos As Boolean Private Sub ComboBox1_Change() If Not blEventos Then Exit Sub MsgBox ComboBox1 End Sub Private Sub ComboBox2_Change() If Not blEventos Then Exit Sub MsgBox ComboBox2 End Sub Private Sub CommandButton1_Click() 'Alternar entre habilitar/desabilitar eventos blEventos = Not blEventos End Sub Private Sub UserForm_Initialize() blEventos = True ComboBox1.AddItem "Felipe" ComboBox1.AddItem "Costa" ComboBox1.AddItem "Gualberto" ComboBox2.AddItem "Felipe" ComboBox2.AddItem "Costa" ComboBox2.AddItem "Gualberto" End Sub
VBA tags courtesy of www.thecodenet.com

Ppara usar o código, crie um formulário com um botão e dois Combobox. O botão alterna entre os modos de habilitar/desabilitar eventos.


-
Regards,

Felipe Costa Gualberto
http://www.ambienteoffice.com.br

Local Time: 06:56 PM
Local Date: 05-20-2013
Location:

 
Reply With Quote Top
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -7. The time now is 01:56 PM.


Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Copyright © 2004 - 2012 VBA Express