Fórum Montar uma SQL com vários parâmetros e variáveis... #286051
24/06/2005
0
faz um tempo que não posto nada no forum por falta de tempo. Porém, atualmente estou enfrentando um dilema grande, é na montagem de SQL em tempo de execução.
Vejamos o que eu estou querendo dizer:
Vamos supor que eu tenha uma Tabela contendo 6 campos e todos eles sejam pesquisáveis (todos possuem dados relevantes na pesquisa - tanto isolados como em grupo)
Numa janela coloquei um checklistbox, contendo todos os seis campos.
Cada campo possui um componente combobox e um edit; Nos comboboxes são permitidos os seguintes elementos de comparação: >, <, <>, >=, <= e = .
Nos componentes edit´s é feito um teste de integridade na digitação. Campos com números só aceitam números e campos com letras só aceitam letras e assim por diante.
Agora, surge o problema. Se eu criar uma estrutura com IF, eu vou ficar maluco testando cada um dos campos e montando a referida consulta em tempo de execução. Então pergunto para os ilustres amigos:
[b:e10d8b8624][color=blue:e10d8b8624]Como eu poderia fazer isso de uma forma mais rápida, com menos código digitado e de forma eficiente?[/color:e10d8b8624] [/b:e10d8b8624]
Se alguém puder me dar uma dica, estou à disposição de todos.
Agradeço desde já a todos os colaboradores
Eixox
Curtir tópico
+ 0Posts
24/06/2005
Danilorsa
Seus campos importantes de pesquisa são: ID_CLIENTE, NOME, CPF
SELECT * FROM CLIENTES
Se estiver usando Oracle, pode fazer assim
WHERE ID_CLIENTES =NVL(:P_ID_CLIENTE,ID_CLIENTE)
AND NOME = NVL(:P_NOME,NOME)
AND CPF = NVL(:P_CPF,CPF)
Se estiver usando Firebird
WHERE ID_CLIENTE =COALESCE(:P_ID_CLIENTE,ID_CLIENTE)
AND NOME = COALESCE(:P_NOME,NOME)
AND CPF = COALESCE(:P_CPF,CPF)
Desta maneira, você passa aqueles que você quiser, e aqueles que você não passar(ou seja, nulo), ele vai comparar com ele mesmo...
Espero ter ajudado,
Danilo Rogério
Betta Informática
Gostei + 0
25/06/2005
Adriano Santos
Caramba, esses [b:8b0956ffb9]COALESCE[/b:8b0956ffb9] e [b:8b0956ffb9]NVL [/b:8b0956ffb9]são comandos do banco?
Posso usar a mesma coisa para MSSql?
Qual seria o comando equivalente?
Isso eu não sabia. Legal essa dica hein [b:8b0956ffb9]danilorsa[/b:8b0956ffb9] :D
Gostei + 0
26/06/2005
Emerson Nascimento
Gostei + 0
26/06/2005
Orpolonio
Veja no help e novidade do FB a clausula CASE
Gostei + 0
26/06/2005
Adriano Santos
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)