CONSULTA COM VARIOS CAIXAS DE BOTOES DE OPCOES

USUARIO.EXCLUIDOS 21/03/2005 11:43:13
#74018
PREZADOS ESTOU TENTANDO FAZER UMA CONSULTA COM VàRIAS CAIXAS DE OPTIONBUTONS E NÃO ESTà DANDO CERTO. TENHO 11 CAIXAS COM 11 NOMES DOS CAMPOS ONDE DIGITEI OS AUTORES E QUANDO O USUàRIO SELECIONA UMA DELAS ELE TEM UM TEXTBOX PARA DIGITAR O NOME DO AUTOR E NO BANCO DE DADOS ELE FAZ A BUSCA NESSES CAMPOS. FIZ O BANCO DE DADOS COM CADA AUTOR NUM CAMPO SEPARADO, OU SEJA, TENHO 11 CAMPOS COM OS AUTORES. Jà USEI IF THEN ELSE E NÃO DEI CERTO. ESTOU COM DÃÅ¡VIDA QUANTO DA UTILIZAÇÃO DA SELECT CASE. ALGUéM PODE ME AJUDAR
USUARIO.EXCLUIDOS 21/03/2005 12:31:33
#74031
Resposta escolhida
voce tem uma tabela autor e outra tabela titulos(creio eu) e as duas estão relacionadas??
se sim qual o nome de cada campo em cada tabela que esta relacionando as duas???
o if com option é simples
if option01.value = true then "select * from titulos where autor = 01"
if option02.value = true then "select * from titulos where autor = 02"
suponho também que na tabela autor exista um campo do tipo numero( o qual se relaciona com a tabela titulos) que identifica cada autor logo se option01 refere - se a Monteiro Lobato e na tabela este numero que o identifca é o numero 01 então a pesquisa fica como fiz acima, se não estiver fazendo assim especifique melhor suas tabelas.
USUARIO.EXCLUIDOS 22/03/2005 11:42:50
#74251
primeiro na sua tabela mude o nome do campo autor para Autor1(vai facilitar)
dentro de evento change da textbox coloque
TextPesquisa_change()
if OptAut1.value = true then
ADOAutor.recordsource = "Select * from textos where autor1 like '%" &TextPesquisa.text & "%'"
ADOAuto.Refresh
end if
if OptAut2.value = true then
ADOAutor.recordsource = "Select * from textos where autor2 like '%" &TextPesquisa.text & "%'"
ADOAuto.Refresh
end if

e faça assim para cada OptAut mudando apenas o numero da option e do autor dentro clausula SQL
com array fica mais facil
primeiro faça o array veja que o primeiro option ficara com o index = o exclua este option e deixe apenas os que vão de 1 até 9 e dentro da change da text coloque apenas isso

TextPesquisa_Change()
for i = 1 to 9
if OptAut(i).value = true then
ADOAutor.recordsource = "Select * from textos where autor" & i & " like '%" &TextPesquisa.text & "%'"
next i
end sub
com array com poucas linhas o problema é resolvido já sem você tem que colocar uma instrução para cada option
USUARIO.EXCLUIDOS 22/03/2005 11:45:40
#74252
algumas correções,
eu coloquei
ADOAuto.Refresh e o correto é
ADOAutor.Refresh
segundo na rotina com array logo depois da linha do recordsource tambem adicione o
ADOAutor.Refresh
USUARIO.EXCLUIDOS 23/03/2005 17:40:59
#74561
já achei o problema com o array
for i = 1 to 9
if OptAut(i).value = true then
ADOAutor.recordsource = "Select * from textos where autor" & i & " like '%"
&TextPesquisa.text & "%'"
end if
next i
end sub

eu não coloquei o END IF depois do ADOAutor [S55]
Tópico encerrado , respostas não são mais permitidas