Ireport... imagem Dinamicas

7 respostas
E

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.

7 Respostas

fcmartins

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.

E

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

_fs

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:

  1. Coloque quatro parametros com nomes diferentes.
  2. 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.
E

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

_fs

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");

E

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

_fs

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 )

Criado 1 de março de 2005
Ultima resposta 2 de mar. de 2005
Respostas 7
Participantes 3