SQL - Consultas com alteração dinâmica.  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Bem, não sei se esse é o título correto sobre o que eu preciso mas vamos lá.

Tenho uma aplicação desktop que a sua função é apenas realizar consultas em dois bancos de dados.
A consulta é feita, baseada em alguns filtros e apresentada em uma JTable.

As inctruções sql são criadas da seguinte forma:
Primeiro crio a primeira parte, com o select e o "join":



A segunda parte é onde os filtros entram em ação, chamo um método obtendo a string contida num componente swing.



E por fim na terceira parte eu finalizo a query se necessário usando um order by ou group by



Ok, numa aplicação desktop isso não é uma tarefa tão complicada.

Só que estou convertendo essa aplicação desktop para web, e preciso fazer todas essas consultas (são mais de 50 diferentes) e quero fazer isso dentro de um JSP, passando os filtros através da tag sql:param. O problema é que quando um combo no meu form está em TODOS, eu uso LIKE para comparar uma string e passo %, até ai tudo bem, e quando um campo está vazio eu não sei o que fazer, e se for numérico como eu posso fazer com que a comparação m.matriculaA = valorDoCampo seja ignorada, ou seja, fazer com que qualquer m.matriculaA seja pesquisada.

Gostaria de saber o que fazer, não queria fazer um jsp para cada consulta e sim um genérico que passa todos os parametros do form de consulta e quando um campo estiver vazio, seja realiza uma consulta em tudo.

Espero que tenham entendido.
Aguardo resposta!

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
andgonca
JavaBaby
[Avatar]

Membro desde: 17/06/2005 15:51:57
Mensagens: 79
Localização: São Paulo
Offline

É Oracle?

Se for vc pode usar nvl().

Assim:

Cria um PreparedStatement com uma query parecida com essa:



E quando for usar, basta dar um setXXX com o que vc recebe do jsp, quando não for nulo, dessa forma o AND do WHERE será considerado.

Se for nulo, faça setNull e o filtro não terá efeito.

Ok?

[]s

Information is not knowledge
Knowledge is not wisdom
Wisdom is not truth
Truth is not beauty

- Frank Zappa
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Muito obrigado pela resposta, mas são dois bancos... Um é Interbase e o outro é SQL Server.

Mesmo assim valeu a dia!

Até mais!

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
r4it0.light
Debugger

Membro desde: 10/11/2009 20:34:01
Mensagens: 62
Offline

Estou precisando fazer uma consulta dinâmica o pior de tudo que é com PreparedStatement. Como vc montou essa consulta ?

Se fosse na JPQL era tranquilo ...


tópico antigo !

This message was edited 2 times. Last update was at 09/02/2010 19:10:59


Quem é o Juiz ?
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team