Tenho um servlet que gera um certo número de Imagem (código de barra), gostaria de saber como mostrar esta imagens geradas no meu relatorio usando jasperReport e Ireport? Sendo que isso é dinamico.
Ireport... imagem Dinamicas
7 Respostas
No Map que você passa para o seu relatório adicione a imagem como um InputStream e no relatório coloque uma imagem e no conteúdo dela carregue como parâmetro, com o mesmo nome do InputStream que você colocou no Map.
Poste o código da classe que chama seu relatório e o código do relatório que fica mais fácil ajudar.
fala fcmartins,
o problema é o seguinte, quando coloco como parametro, tanto imagem como String, ele so mostra o ultimo valor. Por exemplo:
Supondo que tenha que exibir quatro valores, sendo que 3 sao campos (valores da
tabela), logo sao ligacoes diretas com o banco, mas, o quarto é um calculo em cima
dos outros 3, e que nao da pra fazer diretamente. Entao, este quarto campo (Campo
4) sera passado como parametro por minha aplicacao. Vou exibir os valores do campos
de 1 a 3:
Campo 1: 12 – 15 – 16
Campo 2: 25 – 27 – 28
Campo 3: 35 – 48 – 30
Meu campo 4 com os calculos ficaria assim:
Campo 4: 203 – 258 – 395
Quando tento exibir o relatorio ele mostra dessa maneira, exibindo o ultimo valor
que foi definido pelo campo 4(parametro):
Campo 1: 12 – 15 – 16
Campo 2: 25 – 27 – 28
Campo 3: 35 – 48 – 30
Campo 4: 395 – 395 – 395
E eu gostaria que ele exibisse assim:
Campo 1: 12 – 15 – 16
Campo 2: 25 – 27 – 28
Campo 3: 35 – 48 – 30
Campo 4: 203 – 258 – 395
Como posso mostrar os valores do campo4 dinamicamente?
Map parameters = new HashMap();
parameters.put(“Campo 4”, “203”);
parameters.put(“Campo 4”, “258”);
parameters.put(“Campo 4”, “395”);
JasperManager.runReportToPdf(reportFile.getPath(), parameters, jrRS);
Estou precisando um pouco com urgencia.
Obrigado
Cara, tem dois jeitos de resolver isso. Mas antes da solução, saiba que um HashMap sobrescreve o valor antigo ao adicionar outro valor com uma chave que já existe, então é claro que só aparece “395”.
Quanto às soluções:
- Coloque quatro parametros com nomes diferentes.
- Declare quatro variaveis (na janela que tem fields e parameters), e configure o “calculatio type” como SUM e indique qual campo deve ser somado. Depois basta imprimir as quatro variáveis.
Lipe, mas, como eu vou passar os valores para esta variavel? Sendo que vc seleciona o que vc quer visualizar numa pagina jsp, e depois envia para o relatorio
Bem, pensei que era um campo calculado, como você indicou no seu reply.
Se isso não resolve, pode seguir a sugestão 1.
Map parameters = new HashMap();
parameters.put("Campo UM", "203");
parameters.put("Campo DOIS", "258");
parameters.put("Campo TRES", "395");
Lipe Tudo bem, mas, como vou colocar no relatorio isso?
É o seguinte, estou gerando boleto. O usuario vai escolher quais sao os boletos que quer imprimir, pode ser 4, 5, 6, quanto ele quiser pagar. Entao o sistema gera a linhaDigitavel que seria a representacao do codigo de barra em numero. Se ele seleciona por exemplo 5 parcelas, entao, o sistema vai gerar 5 linhasDigitaveis (representacao do codigo). Como eu faria para que para cada boleto uma linhaDigitada criada fosse inserida para seu respectivo boleto? Sendo que gera 3 boletos por pagina.
Obrigado
Bem, não imagino como fazer isso de maneira bonita usando iReports. Então a maneira feia, já que você tem uma quantidade de parcelamentos possíveis limitada seria criar todas as linhas no relatório e colocar na expressão “print when” de cada uma das linhas o condicional da quantidade de parcelas passada como parametro.
Se eu entendi bem, ficaria algo como:
____________
linha 1 |____________| print when = Boolean.valueOf( $P{PARCELAS} >= 1 )
____________
linha 2 |____________| print when = Boolean.valueOf( $P{PARCELAS} >= 2 )
____________
linha 3 |____________| print when = Boolean.valueOf( $P{PARCELAS} >= 3 )