Ir para conteúdo
Fórum CódigoFonte.net
RenataFA

Jasper -> passar SQL em tempo de execução

Recommended Posts

Boa tarde,

Imaginem que tenho um relatorio.jasper. Esse relatorio.jasper tem a seguinte instrução SQL:

"select * from tabela where campo = $P{parCodigo}"

E antes de eu chamar esse relatorio.jasper durante a execução do meu programa, eu passava o valor correspondente ao parCodigo.

Tudo funciona certinho. O problema é que agora, por motivos não tão simples de explicar, eu preciso passar o SQL inteiro como parâmetro. Então fiz isso:

parSQL = "Select * from tabela where campo = $P{parCodigo}";

parCodigo = 1; // por exemplo

Ou seja, criei dois parâmetros e não apenas um como era antes. Agora antes de chamar meu relatorio.jasper eu passo esses dois parâmetros. No lugar lá no jasper onde tem que colocar a instrução SQL do relatório eu apenas coloquei o $P!{parSQL}.

Eu esperava que o jasper soubesse como substituir isso, eu achava que ele encontraria o $P{parSQL} e substituiria ele por "Select * from tabela where campo = $P{parCodigo}". E depois ele verificaria novamente, encontraria o $P{parCodigo} e substituiria por 1. Só que não é o que ele faz na prática!

O que percebo é que ele verifica a primeira vez e troca o $P!{parSQL} pela instrução passada. Depois ele executa direto, sem verificar denovo se ainda existem novos parâmetros para serem substituidos. Pra funcionar, ele teria que fazer de forma recursiva a substituição dos parâmetros. Mas ele não faz!

Minha questão é se alguém sabe alguma outra forma de passar uma instrução SQL para o jasper em tempo de execução sem ser através de parâmetros (que foi o que eu tentei e não funcionou). Ou se alguém sabe uma forma de fazer com que ele substitua todos os parâmetros e não apenas o primeiro nível deles.

Sei que talvez muitos estejam pensando: Pq vc já não coloca o valor do parCodigo na instrução e manda um parâmetro só assim "select * from tabela where campo = 1". Bem, isso não é algo simples de explicar,,, posso dizer que para o meu caso isso é impossível, usei este exemplo simples para tentar transmitir o problema, mas no caso real não dá para fazer desta forma.

Agradeço qq. ajuda!

[]'s, Renata

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Muito obrigada pela dica! Aprendi mais uma :P

Eu já tinha conseguido resolver, usei Scriptlets,,, ficou legal tb! :rolleyes:

Vlw!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveitando,

essa aplicação foi feita em PHP certo???

como você fez as configurações para rodar o relatório em jasper, sou novo na area e naum toh chegando nem perto.

Se algum pudesse me ajudar, soh estou encontrando manuais de como rodar jasper em java mas eu preciso em PHP.

Valew pela atenção..

Compartilhar este post


Link para o post
Compartilhar em outros sites

ERRADO!

A aplicação em questão é java. Vc está lendo um forum java, obviamente o assunto em questão é java. Tente fazer a msma pergunta num forum de PHP...

Aproveitando,

essa aplicação foi feita em PHP certo???

como você fez as configurações para rodar o relatório em jasper, sou novo na area e naum toh chegando nem perto.

Se algum pudesse me ajudar, soh estou encontrando manuais de como rodar jasper em java mas eu preciso em PHP.

Valew pela atenção..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×
×
  • Criar Novo...