Desculpe a demora, eu não tinha um ex pronto e tive que fazer. Estou cheia de trabalho essa semana, então acabou demorando. Estou te enviando o msm ex que mandei pra um outro colega que me perguntou sobre o assunto, espero que te ajude.
Enfim, vamos lá, algumas dicas:
Na época que eu comecei a usar Scriptlets, não consegui fazer funcionar usando Scriptlets interno ao relatório. Não sei se se trata de algum bug, mas como não consegui tentei o externo e funcionou perfeitamente, então, pra mim já estava ótimo e foi assim que deixei.
Eu uso iReport 1.3.0, não sei se isso pode ter alguma diferença, mas eu já usava scriptlets desde versões anteriores do iReport e depois que atualizei não tive problemas. O ex que fiz obviamente está nesta versão, mas tenho quase certeza de que vc pode abrir na versão que usa e rodar que não terá problemas.
Abaixo tem para download um exemplo funcionando. Dentro do fonte eu deixei alguns comentários que devem te ajudar.
Por experiência própria te digo que sempre que alterar a classe scriptlet, vc deve recompilar o .jrxml para gerar o .jasper. Não li isso e não tenho nenhuma comprovação teórica sobre o assunto. Mas o que senti é que qdo vc gera o .jasper ele busca o conteúdo da classe de scriptlet e compila junto. Por isso, sempre que fizer alterações nesta classe, o correto é recompilar o .jrxml.
Com scriptlets vc só altera VARIÁVEIS do seu relatório. Então vai da sua criatividade de forma a montar seu relatório para usar determinadas variáveis que vc vai estar alterando através dos scriptlets em tempo de execução.
No seu arquivo .jrxml:
- não use um texto estático, mas sim um campo texto com a sua variável
- a variável vc deve criar com o Calculation Type = System, senão ela não permite assumir os valores passados pelo scriptlet
- nas propriedades do relatório vc coloca a classe de scriptlet como sendo as packages até chegar no lugar onde está o .java. Como eu fiz colocando “teste.Teste_scriptlet”
- ainda nas propriedades do relatório vc especifica que quando não tiver informações para listar (aba More…), vc quer que mostre todas as seções, exceto o detail. Se não fizer isso, ele não vai mostrar nada já que estamos tentando imprimir algo sem consultar registro no BD
Bem, é isso, acho que o resto é vc olhando no exemplo msm.
Boa sorte, qq coisa vc “grita”.
[]'s
Renata