SELECTS VB6
boas novamente pessoal , bem o meu problema e o seguinte:
tenho 2 combobox , e ao carregar na combo ira fazer um select com o tipo de pesquisa qe carregou .
gostava de saber se da para adicionar um select ja a um select existente
ex :
combo1 - escolho o tipo [Ô]águas[Ô] - vai fazer um select em qe so vai aparecer produtos do tipo [Ô]aguas[Ô]
combo2 - escolho por exemplo que tenham quantidade menor que 30 , ele faz novo select e esquece o da combo1
queria qe ele continuase com o antigo select , so tirava caso o utilizador o retira-se mesmo
ajudas?
tenho 2 combobox , e ao carregar na combo ira fazer um select com o tipo de pesquisa qe carregou .
gostava de saber se da para adicionar um select ja a um select existente
ex :
combo1 - escolho o tipo [Ô]águas[Ô] - vai fazer um select em qe so vai aparecer produtos do tipo [Ô]aguas[Ô]
combo2 - escolho por exemplo que tenham quantidade menor que 30 , ele faz novo select e esquece o da combo1
queria qe ele continuase com o antigo select , so tirava caso o utilizador o retira-se mesmo
ajudas?
explique-se melhor ta meio confuso ainda
imagine 2 combobox
combo1 tem - [Ô]águas[Ô] , [Ô]sumos , [Ô]todos[Ô]
combo2 tem - [Ô]quantidade maior que 20[Ô], [Ô]quantidade menor qe 20[Ô] , [Ô]todas as quantidades[Ô]
(isto para filtrar a base de dados)
imagina
private sub combo1_click()
if combo1.text = [Ô]águas[Ô] then
e aqui fica i select para filtrar os produtos referentes a águas
end if
end sub
agora isto iria filtrar agora imagina qe qero meter um segundo filtro vindo da combo2
private sub combo2_click()
if combo2.text = [Ô]quantidade maior que 20[Ô] then
e aqui fica i select para filtrar produtos com uma quantidade maior que 20 , e sendo so águas por causa do outro select , ter 2 selects activos tas a perceber?
end if
end sub
combo1 tem - [Ô]águas[Ô] , [Ô]sumos , [Ô]todos[Ô]
combo2 tem - [Ô]quantidade maior que 20[Ô], [Ô]quantidade menor qe 20[Ô] , [Ô]todas as quantidades[Ô]
(isto para filtrar a base de dados)
imagina
private sub combo1_click()
if combo1.text = [Ô]águas[Ô] then
e aqui fica i select para filtrar os produtos referentes a águas
end if
end sub
agora isto iria filtrar agora imagina qe qero meter um segundo filtro vindo da combo2
private sub combo2_click()
if combo2.text = [Ô]quantidade maior que 20[Ô] then
e aqui fica i select para filtrar produtos com uma quantidade maior que 20 , e sendo so águas por causa do outro select , ter 2 selects activos tas a perceber?
end if
end sub
SYSZEN utilizo 2 combo para refinar algumas pesquinas (sistema escolar por série e turma).
preencho a combo1 com os dados no evento ONLOAD do form
se o select tem resultado preencho da seguinte forma
[ô] você escolhe a forma de dar o loop, eu utilizo while NOT .eof e no final o rs.movenext e wend
COMBO1.AddItem rs!DESCRICAO
COMBO1.ItemData(COMBO1.NewIndex) = rs!ID
Na primeira no evento ou CLICK da combo1, chamo o select que irá preencher a segunda combo.
se o select retornar resultados NOT EOF ele preenche a combo2
Eu utilizo como filtro o [Ô]id[Ô] de cada campo do banco de dados assim:
COMBO2.AddItem rs!DESCRICAO
COMBO2.ItemData(COMBO2.NewIndex) = rs!ID
ao nesta combo2 ele chama o select final
OBS: para você relacionar o código de cada combo use
para combo1
ID1 = combo1.ItemData(combo1.ListIndex)
para combo2
ID2 = combo2.ItemData(combo2.ListIndex)
Com isso você consegue planejar seu código, são os macetes, não o código pronto.
preencho a combo1 com os dados no evento ONLOAD do form
se o select tem resultado preencho da seguinte forma
[ô] você escolhe a forma de dar o loop, eu utilizo while NOT .eof e no final o rs.movenext e wend
COMBO1.AddItem rs!DESCRICAO
COMBO1.ItemData(COMBO1.NewIndex) = rs!ID
Na primeira no evento ou CLICK da combo1, chamo o select que irá preencher a segunda combo.
se o select retornar resultados NOT EOF ele preenche a combo2
Eu utilizo como filtro o [Ô]id[Ô] de cada campo do banco de dados assim:
COMBO2.AddItem rs!DESCRICAO
COMBO2.ItemData(COMBO2.NewIndex) = rs!ID
ao nesta combo2 ele chama o select final
OBS: para você relacionar o código de cada combo use
para combo1
ID1 = combo1.ItemData(combo1.ListIndex)
para combo2
ID2 = combo2.ItemData(combo2.ListIndex)
Com isso você consegue planejar seu código, são os macetes, não o código pronto.
preenche o primeiro combo no lload do form...
no segundo combo utilize o evento click do mesmo para preencher, refiando a busca..
no segundo combo utilize o evento click do mesmo para preencher, refiando a busca..
[ô]eu uso muito este tipo de consulta parametrizada...
[ô]segue uma lógica abaixo
private sub combo1_click()
GeraConsulta
end sub
private sub combo2_click()
GeraConsulta
end sub
private sub GeraConsulta()
dim sql as string
sql = [Ô]Select * from tabela [Ô]
select case combo1.text
case [Ô]águas[Ô]
sql = sql & [Ô]where campo1 = [ô]águas[ô] [Ô]
case [Ô]sumos[Ô]
sql = sql & [Ô]where campo1 = [ô]sumos[ô] [Ô]
case else
sql = sql & [Ô]where campo1 <> [ô][ô] [Ô]
end select
select case combo2.text
case [Ô]quantidade maior que 20[Ô]
sql = sql & campo2 > 20
case [Ô]quantidade menor qe 20[Ô]
sql = sql & campo2 <= 20 [ô]menor e igual
end select
end sub
[ô]agora é só montar o recordset do comando montado na variavel sql
[ô]segue uma lógica abaixo
private sub combo1_click()
GeraConsulta
end sub
private sub combo2_click()
GeraConsulta
end sub
private sub GeraConsulta()
dim sql as string
sql = [Ô]Select * from tabela [Ô]
select case combo1.text
case [Ô]águas[Ô]
sql = sql & [Ô]where campo1 = [ô]águas[ô] [Ô]
case [Ô]sumos[Ô]
sql = sql & [Ô]where campo1 = [ô]sumos[ô] [Ô]
case else
sql = sql & [Ô]where campo1 <> [ô][ô] [Ô]
end select
select case combo2.text
case [Ô]quantidade maior que 20[Ô]
sql = sql & campo2 > 20
case [Ô]quantidade menor qe 20[Ô]
sql = sql & campo2 <= 20 [ô]menor e igual
end select
end sub
[ô]agora é só montar o recordset do comando montado na variavel sql
Tópico encerrado , respostas não são mais permitidas