Como atribuir valor para campos do relatorio(IREPORT)

3 respostas
carlosgyn

Ai Galera,
Veja o meu problema, talvez alguém ai já tenha a solução:

1 - No IReport eu fiz a definição dos meu campos(codCliente,NomeCliente…) através de Javabeans DataSource usando uma classe RelPesquisaVO com metodos sets e gets.

2- No servlet que eu quero imprimir o relatório eu estou fazendo o sequinte:

JasperReport relatorio = JasperManager.loadReport("\Relatorios\RelPessoaFisica.jasper");

JRField campos[] = relatorio.getFields();

for (int i=0; i < campos.length; i++){

System.out.println("campo " + i + "  "+ campos[i].getName().toString());

}

isto mostra todos os fields do meu relatorio.

3 - O PROBLEMA :
Como posso atribuir valores para estes campos para que sejam mostrados, hoje aparece todos null.

3 Respostas

joaobosco

cara... num sei mto bem se eu entendi a sua duvida...

mas eh o seguinte: qdo tu usa o Javabeans DataSource do iReport tu soh diz para o relatorio qual o nome q os fields do relatorio vai ter. Ele olha o bean e cria os fields de acordo com os mehtodos gets do relatorio.
depois tu tem q carregar o relatorio com seus beans (ja populados). Eu uso uma classe q eu criei que implementa a interface
dori.jasper.engine.JRDataSource.
algo assim:

//Lista com os beans ja populados
List listaBeans = getListaBeans&#40;&#41;;

//objeto DataSource criado usando os beans
JRDataSource ds = new classe.criada.por.mim.DefaultReportSource&#40;listaBeans&#41;;

//preenchendo o relatorio. param eh um mapa contendo os parametros para o relatorio &#40;data do dia, por exemplo&#41;
JasperPrint p = JasperManager.fillReport&#40;r, param, ds&#41;;

esta eh a maneira q eu faco... nao sei se da pra fazer diferente.

teh mais ae!

carlosgyn

Valeu Bosco e quase isto que eu quero, so q não entendi o sq.

1 - O IReport criou os fields com os metodos get da minha classe.
2 - veja o codigo:

ArrayList list = new ArrayList();
String codCliente = "1";
String nomeCliente = "Carlos";
PesquisaVO rel = new PesquisaVO(codCliente,nomeCliente);
list.add(rel);
desta forma eu populei o meu ArrayList com todos os que queria; onde PesquisaVO e minha classe com os gets.
3 - Como posso carregar o relatorio com esta variavél list implementando a interface JRDataSource?

"joaobosco":
cara... num sei mto bem se eu entendi a sua duvida...

mas eh o seguinte: qdo tu usa o Javabeans DataSource do iReport tu soh diz para o relatorio qual o nome q os fields do relatorio vai ter. Ele olha o bean e cria os fields de acordo com os mehtodos gets do relatorio.
depois tu tem q carregar o relatorio com seus beans (ja populados). Eu uso uma classe q eu criei que implementa a interface
dori.jasper.engine.JRDataSource.
algo assim:

//Lista com os beans ja populados
List listaBeans = getListaBeans&#40;&#41;;

//objeto DataSource criado usando os beans
JRDataSource ds = new classe.criada.por.mim.DefaultReportSource&#40;listaBeans&#41;;

//preenchendo o relatorio. param eh um mapa contendo os parametros para o relatorio &#40;data do dia, por exemplo&#41;
JasperPrint p = JasperManager.fillReport&#40;r, param, ds&#41;;

esta eh a maneira q eu faco... nao sei se da pra fazer diferente.

teh mais ae!

joaobosco

ok.. tenta isto:

//Lista com os beans ja populados 
List listaBeans = getListaBeans&#40;&#41;; 

//objeto DataSource criado usando os beans 
JRDataSource ds = new  JRBeanCollectionDataSource&#40;listaBeans&#41;; 

//preenchendo o relatorio. param eh um mapa contendo os parametros para o relatorio &#40;data do dia, por exemplo&#41; 
JasperPrint p = JasperManager.fillReport&#40;r, param, ds&#41;;

eh q eu tava usando uma classe criada aqui na empresa ... :)

teh mais! :D

Criado 11 de junho de 2004
Ultima resposta 15 de jun. de 2004
Respostas 3
Participantes 2