Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nork

[Resolvido] Busca SQL "inteligente"

Recommended Posts

Boa tarde pessoal,

 

Seguinte... estou desenvolvendo um sistema em ASP com banco de dados ACCESS e em determinadas situações o usuário PODERA OU NÃO fazer filtragem do conteúdo do banco de dados através 8 LISTMENU.

 

O problema é que as possibilidades são muitas (256) e eu não quero fazer 256 buscas SQL diferentes prevendo todas as combinações que poderão ser feitas pelo usuário.

 

Eu pensei em fazer algo do tipo:

Caso ele selecione alguma filtragem a busca SQL assume “=” no script e caso ele selecione INDIFERENTE no LISTMENU o SQL assume “<>” no script.

 

Pois assim eu poderia fazer apenas 1 linha SQL.

 

Exemplo1:

Supondo que eu tenha apenas os filtros CIDADE e IDADE.

Se o usuário escolher CIDADE=(São Paulo) e IDADE=(Indiferente), automaticamente a busca ficaria

 

Conteudo das variáveis neste caso:

CIDADE= SÃO PAULO

IDADE=INDIFERENTE

 

'sql="select * FROM tabela1 WHERE CIDADE='" &CIDADE +"' AND IDADE <>'" &IDADE + "' " + "order by data desc "

 

 

Exemplo2:

Supondo que eu tenha apenas os filtros CIDADE e IDADE.

Se o usuário escolher CIDADE=(Indiferente) e IDADE=(20), automaticamente a busca ficaria

 

Conteudo das variáveis neste caso:

CIDADE= INDIFERENTE

IDADE=20

'sql="select * FROM tabela1 WHERE CIDADE<>'" &CIDADE +"' AND IDADE ='" &IDADE + "' " + "order by data desc "

 

 

 

Conclusão:

O fato do usuário não ter escolhido filtro p/ IDADE não interfere, pois a comparação é se <> ou vice versa.

 

Sempre que for INDIFERENTE será <> e sempre que algum filtro for escolhido será =

 

 

Estou explicando tudo p/ que vcs consigam entender minha necessidade, mas basicamente o que eu preciso saber é como colocar parte do OPERANDO SQL como variável, no caso o sinal de = e <> será uma variável, que assumirá = ou <> dependendo do que o usuário escolher.

 

Será que deu p/ entender a idéia ???

 

Caso não tenha entendido postem ai, que eu tento esclarecer melhor minha duvida !!

 

 

 

Valeuuuuu !!!!

 

 

Fico no aguardo !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Digamos que o valor da option "INDIFERENTE" na sua combo seja "Null"

 

If (Request.Form("NomeDaCombo") = "Null") Then
Operador = "<>"
Else
Operador = "="
End if

CIDADE= SÃO PAULO

IDADE=INDIFERENTE

'sql="select * FROM tabela1 WHERE CIDADE='" &CIDADE +"' AND IDADE  '" & Operador & "' '" &IDADE + "' " + "order by data desc "

 

Se eu entendi certo.. é isso q você qr..

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ae DARK beleza???

 

Então... não deu certo não !! Ta dando erro

 

coloquei a linha que você falou, apenas alterei as variaveis.

 

Conteudo das variaveis.

 

EMPRESA="HARTRONIC"

NOME="israel"

Operador="="

 

 

 

sql="select * FROM tabela1 WHERE nome='" &nome +"' AND EMPRESA '" & Operador & "' '" &EMPRESA + "' " + "order by nome "

 

 

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta 'nome='israel' AND EMPRESA '=' 'HARTRONIC''.

/e-mails/vr1/adm_buscar.asp, line 120

 

 

A linha 120 e justamnte onde eu abro esse RecordSet

 

 

fico no aguardo !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae DARK,, deu certo !!!

 

Depois de varias tentativas deu certo !!

 

É quase aquilo que você falou !!

 

 

sql="select * FROM tabela1 WHERE nome='" &nome +"' AND EMPRESA " & Operador & " '" &EMPRESA + "' " + "order by nome "

 

 

Deixei apenas com Aspas d´plas tirando a simples do operador !!!

 

 

VALEU AE CARA !!

 

Abração !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.