Relátório IReport / Jasper no grails
05/02/2013 18:11
0
Senhores, estou tentando fazer um relatorio no jasper reports, mas não consigo de forma alguma. Se os senhores já trabalharam alguma vez com iReports, peço ajuda. Segue o meu código.


if (dadosTro) {
String relatorioprincipal = grailsAttributes.getApplicationContext().getResource("/relatorio/RelatorioTROv0.3.7.jrxml").getFile().toString()

//SubRelatório Envolvidos
String pathReportSubEnvolvidos = servletContext.getRealPath('/relatorio') + "/" + "RelatorioTROv0.3.5_subreport1_QualificacaoEnvolvidov.1.0.jasper";
JasperReport jasperReportSubEnvolvidos = seseg.compilaRelatorios(pathReportSubEnvolvidos);
params.put("SUBREPORT_DIR_ENVOLVIDOS", jasperReportSubEnvolvidos);
//Fim Envolvidos

//SubRelatório do SubRelatorio de Guarnicao
String pathReportSubRelGuarnicao = servletContext.getRealPath('/relatorio') + "/" + "subRelatorioTRO_guarnicao.jasper";
JasperReport jasperReportSubRelGuarnicao = seseg.compilaRelatorios(pathReportSubRelGuarnicao);
params.put("SUBREPORT_DIR_SUB_GUARNICAO", jasperReportSubGuarnicao);
//Fim Guarnição

//SubRelatório de Guarnicao
String pathReportSubGuarnicao = servletContext.getRealPath('/relatorio') + "/" + "RelatorioTROv0.3_guarnicaov1.0.jasper";
JasperReport jasperReportSubGuarnicao = seseg.compilaRelatorios(pathReportSubGuarnicao);
params.put("SUBREPORT_DIR_GUARNICAO", jasperReportSubGuarnicao);
//Fim Guarnição

//SubRelatório de Veiculo
String pathReportVeiculo = servletContext.getRealPath('/relatorio') + "/" + "RelatorioTRO_subreport1_ApreensoesVeiculov0.1.jasper";
JasperReport jasperReportVeiculo = seseg.compilaRelatorios(pathReportVeiculo);
params.put("SUBREPORT_DIR_VEICULO", jasperReportVeiculo);
//Fim Veiculo

//SubRelatório de Entorpecentes
String pathReportEntorpecentes = servletContext.getRealPath('/relatorio') + "/" + "RelatorioTRO_subreport1_ApreensoesEntorpecentes.1.jasper";
JasperReport jasperReportEntorpecente = seseg.compilaRelatorios(pathReportEntorpecentes);
params.put("SUBREPORT_DIR_ENTORPECENTE", jasperReportEntorpecente);
//Fim Entorpecentes

//SubRelatório de Armas
String pathReportArmas = servletContext.getRealPath('/relatorio') + "/" + "RelatorioTRO_subreport1_ApreensoesArmasv0.1.jasper";
JasperReport jasperReportArmas = seseg.compilaRelatorios(pathReportArmas);
params.put("SUBREPORT_DIR_ARMAS", jasperReportArmas);
//Fim Armas

//SubRelatório de Municao
String pathReportMunicao = servletContext.getRealPath('/relatorio') + "/" + "RelatorioTRO_subreport1_ApreensoesMuniçõesv0.1.jasper";
JasperReport jasperReportMunicao = seseg.compilaRelatorios(pathReportMunicao);
params.put("SUBREPORT_DIR_MUNICAO", jasperReportMunicao);
//Fim Municao

//SubRelatório de Material
String pathReportMaterial = servletContext.getRealPath('/relatorio') + "/" + "RelatorioTRO_subreport1_ApreensoesMaterialv0.1.jasper";
JasperReport jasperReportMaterial = seseg.compilaRelatorios(pathReportMaterial);
params.put("SUBREPORT_DIR_MATERIAL", jasperReportMaterial);
//Fim Material


//cria uma o qual vai conter todas os parametros do relatório
params._format = "PDF"
params._file = relatorioprincipal
def report = jasperService.buildReportDefinition(params, request.getLocale(), dadosTro)

generateReport(report)



//Gera o relatório


def generateReport = { reportDef ->
if (!reportDef.fileFormat.inline && !reportDef.parameters._inline) {
response.setHeader("Content-Disposition", "inline; filename=\"${reportDef.parameters._name ?: reportDef.name}.${reportDef.fileFormat.extension}\"");
response.setHeader("Content-Type", "${reportDef.fileFormat.mimeTyp}");
response.contentType = reportDef.fileFormat.mimeTyp
response.characterEncoding = "UTF-8"
response.outputStream << reportDef.contentStream.toByteArray()
} else {
render(text: reportDef.contentStream, contentType: reportDef.fileFormat.mimeTyp, encoding: reportDef.parameters.encoding ? reportDef.parameters.encoding : 'UTF-8');
}
}
Tags: iReport


0
A saída tem que ser PDF.

Abraços
05/02/2013 18:13


0
Se alguém souber também qual a melhor forma de gerar relatório PDF no Grails.
05/02/2013 18:14


0
Franklin,

da uma olhada em um plugin chamado rendering.
Ele pega a renderização de qualquer arquivo GSP e transforma em PDF, XLS e outros formatos.

Bem mais fácil que o Jasper.


0
Franklin,

se quiser aproveitar relatórios do Jasper mesmo, sugiro o http://grails.org/plugins/jasper-response.
Só que nele tens que usar o arquivo ".jasper" e não o ".jrxml", mas acredito que isso é o de menos, não?


0
Estava olhando isso e nenhuma das soluções por enquanto esta me atendendo, tenho que criar vários SubRelatórios no JASPER, alguém já fez no Grails, SubRelatórios com Jasper Reports e IReports? Se fosse no Java faria isso Fácil Fácil, agora no grails tá foda. Alguém tem algum código de exemplo em GRAILS para postar.
Henrique, essa solução é tranquila, mas infelizmente não me atende, pois o relátório é complexo.
A documentação desse Jasper-response, além de não ensinar a fazer subRelatórios é um LIXO, nada contra você josé. Agradeço até pela resposta.

Agradeço veementemente.

Abraços
06/02/2013 17:40


0
Franklin,

uma opção interessante é você fazer em Grails exatamente como faria em Java.
Lembre-se de que Groovy acessa código Java e vice-versa de forma transparente.


0
"A documentação desse Jasper-response, além de não ensinar a fazer subRelatórios é um LIXO"
Amigo, não se exalte. O objetivo da documentação é ensinar a usar o plugin e não o jasper.

No plugin você passa os parâmetros e o resto é com o Jasper, simples assim. Se fez os subrelatórios funcionando no jasper e no "preview" dele, vão funcionar no plugin seguramente. Se me mandar teu projeto te devolvo pronto em 5 minutos ou menos.

Mas ninguém agrada a todos. Pelo menos todos os emails e mensagens sobre o plugin e a documentação têm sido só elogios. Este foi o primeiro comentário negativo e sobre algo que nem deveria mesmo estar na documentação.


0
Franklin eu uso desta forma e é bem simples
....

1 -Crie o relatório utilizando o aplicativo Ireport
2 -Crie um diretório “reports” no caminho “nome da aplicação”/web-app/
3 -Copie o arquivo “relatório.jrxml” para o diretório reports
4 -instale os plugins
$ grails instal-plugin jasper
$ grails install-plugin dynamic-jasper
insira na pagina que deseja mostrar:ex list.gsp, a seguinte linha
<g:jasperReport jasper=“nome do relatório” format=“PDF” name=“nome do relatório que aparece na tela”/>
já gera o relatorio em PDF ou outro formato que você trocar na tag format
espero ter ajudado
06/03/2013 18:26


0
Valeu, meu amigo te agradeço pela ajuda. Acho que fazer dessa forma é bem mais fácil do que o caminho que eu percorri. Tive que fazer um converter de grails para java para gerar o relatório com o Jasper. Qual versão do IReport você esta usando?

Tentei usar a versão 3.6.1, coloquei no atributo language do IReport para compilar em Grails e ocorre erros, quando vou compilar no IReport. Quando compilei no Java foi normal. Por isso, que tinha desistido de fazer dessa forma. Mas, vou tentar novamente.

Abração!

06/03/2013 19:13


0
Uso o Ireport 4.7.1
12/03/2013 13:50



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto