[Resolvido] Gerar relatório utilizando somente parâmetros passados
6 respostas
Z
zerone
Boa tarde, galera
Gostaria de saber se isto é possível:
Tenho um objeto do tipo Cliente e um relatório .jasper que fiz usando o Ireport.
Neste relatório, coloquei alguns parâmetros de entrada como Nome, codigo etc…
Porém quando estou gerando o relatório via código ele diz q não existem páginas a serem exibidas
Existe algum modo de passar somente os parametros dos campos do relatório ao invés de utilizar SQL?
O métood que estou utilizando é este:
publicvoidgeraRelatorioAssociado(Clientecliente)throwsJRException{// Endereço do relatórioURLarquivo=getClass().getResource("/model/reports/jasper/RelatorioCliente.jasper");// Mapa de parâmetros do relatórioMap<String,Object>parametros=newHashMap<String,Object>();parametros.put("ClienteID",cliente.getClienteID());parametros.put("Classificacao",cliente.getTipoPessoa());JasperReportreport=(JasperReport)JRLoader.loadObject(arquivo);JasperPrintrelatorio=JasperFillManager.fillReport(report,parametros);JasperViewerviewer=newJasperViewer(relatorio,false);viewer.setTitle("Ficha do associado");viewer.setVisible(true);}
Existe e, não é através de parâmetros, mas, utilizando fields.
A diferença entre eles é que:
$P{param}
É utilizado na parte “baixa” da coisa, para ações que o engine do iReport irá executar, como uma consulta ao banco de dados.
$F{field}
É o que é exibido, como resultado do processamento do engine do iReport (como o resultado de uma consulta ao banco de dados).
Se, de forma correta, pretende deixar de usar query no relatório, pode optar por JRBeanCollectionDataSource (se não me engano é isso) e, mapear os objetos que serão colocados nele no relatório, cada atributo a ser exibido deve ter um $F{field} correspondente.
Z
zerone
drsmachado:
Estou passando os parâmetros via hashmap mas mesmo assim ele insiste dizer que o “Documento não possui páginas”
publicvoidgeraRelatorioAssociado(Associadoassociado)throwsJRException{// Endereço do relatórioURLarquivo=getClass().getResource("/model/reports/jasper/RelatorioAssociado.jasper");// Mapa de parâmetros do relatórioMap<String,Object>parametros=newHashMap<String,Object>();parametros.put("associadoID",associado.getAssociadoID());parametros.put("classificacao",associado.getTipoPessoa());parametros.put("tipoAssociado",associado.getTipoAssociado().getDescricao());JasperReportreport=(JasperReport)JRLoader.loadObject(arquivo);JasperPrintrelatorio=JasperFillManager.fillReport(report,parametros);JasperViewerviewer=newJasperViewer(relatorio,false);viewer.setTitle("Ficha do associado");viewer.setVisible(true);//viewer.show(); }
vlw
D
drsmachado
zerone:
drsmachado:
Estou passando os parâmetros via hashmap mas mesmo assim ele insiste dizer que o “Documento não possui páginas”
publicvoidgeraRelatorioAssociado(Associadoassociado)throwsJRException{// Endereço do relatórioURLarquivo=getClass().getResource("/model/reports/jasper/RelatorioAssociado.jasper");// Mapa de parâmetros do relatórioMap<String,Object>parametros=newHashMap<String,Object>();parametros.put("associadoID",associado.getAssociadoID());parametros.put("classificacao",associado.getTipoPessoa());parametros.put("tipoAssociado",associado.getTipoAssociado().getDescricao());JasperReportreport=(JasperReport)JRLoader.loadObject(arquivo);JasperPrintrelatorio=JasperFillManager.fillReport(report,parametros);JasperViewerviewer=newJasperViewer(relatorio,false);viewer.setTitle("Ficha do associado");viewer.setVisible(true);//viewer.show(); }
vlw
Ler o que eu escrevi, não leu?
Eu disse que $P{} não funciona, tem que ser $F{} e não é através de hashmap, é usando uma classe que recebe uma collection como argumento em seu construtor e se chama JRBeanCollectionDataSource que é provida pelo iReport (uma rápida pesquisa no google e você terá várias opções de tutoriais sobre o uso desta classe).
Z
zerone
Entendi kra, vlw
Outra dúvida que surgiu:
Nesse relatório já estou trazendo os dados do cliente, porém criei um subreport chamado contatos_cliente onde irão ser apresentados os contatos (email, telefone…)
Como faço para passar o datasource de contatos para este subrelatorio que fiz dentro do relatório principal.
PS: vlw mesmo, se estivessemos no yahoo respostas te daria 10 points :lol: :lol:
Uma última dúvida, tem como redimensionar automaticamente as “bands” dos subrelatórios, de modo que eles não sobreponham os demais que estão abaixo?
Não me importo em ter que imprimir mais de uma folha se for necessário…
vlw
Resolvido,
basta modificar no ireport a propriedade Position Type para float