RenataFA 0 Denunciar post Postado Janeiro 19, 2007 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 você 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
nordi 1 Denunciar post Postado Janeiro 22, 2007 Bem Renata, pelo que eu entendi, você tem um parametro e dependendo do valor do parametro, ele utilizara, ele ira realizar o select diferente e isso ? At+ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
RenataFA 0 Denunciar post Postado Fevereiro 21, 2007 Desculpe a demora pra responder...Eu consegui resolver meu problema usando Scriptlets. Eu passo o SQL como parâmetro e através de Scriptlets eu modifico o conteúdo deste parâmetro em tempo de execução, trocando algum outro parâmetro interno pelo valor correspondente.De qq forma obrigada pela atenção! Compartilhar este post Link para o post Compartilhar em outros sites