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.
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:
[code]//Lista com os beans ja populados
List listaBeans = getListaBeans();
//objeto DataSource criado usando os beans
JRDataSource ds = new classe.criada.por.mim.DefaultReportSource(listaBeans);
//preenchendo o relatorio. param eh um mapa contendo os parametros para o relatorio (data do dia, por exemplo)
JasperPrint p = JasperManager.fillReport(r, param, ds);[/code]
esta eh a maneira q eu faco… nao sei se da pra fazer diferente.
teh mais ae!
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?
[quote=“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:
[code]//Lista com os beans ja populados
List listaBeans = getListaBeans();
//objeto DataSource criado usando os beans
JRDataSource ds = new classe.criada.por.mim.DefaultReportSource(listaBeans);
//preenchendo o relatorio. param eh um mapa contendo os parametros para o relatorio (data do dia, por exemplo)
JasperPrint p = JasperManager.fillReport(r, param, ds);[/code]
esta eh a maneira q eu faco… nao sei se da pra fazer diferente.
teh mais ae![/quote]
ok… tenta isto:
[code]//Lista com os beans ja populados
List listaBeans = getListaBeans();
//objeto DataSource criado usando os beans
JRDataSource ds = new JRBeanCollectionDataSource(listaBeans);
//preenchendo o relatorio. param eh um mapa contendo os parametros para o relatorio (data do dia, por exemplo)
JasperPrint p = JasperManager.fillReport(r, param, ds);[/code]
eh q eu tava usando uma classe criada aqui na empresa …
teh mais!