Gerar Report
30/09/2014 22:49
0
E aí pessoal, sou novo com Grails e gostaria de saber se alguém sabe se dá para exportar o .jar dos domains e adicionar ao classpath do iReport, para então invocar os fields pelo JavaBean Datasource?

Tentei fazer dessa maneira e não consegui carregar os fields, somente com a conexão direta com o mysql, usando SQL, o que deu problema ao gerar o .pdf, dizendo que não encontra a field. Acho que é porque o nome da coluna na tabela do mysql é diferente do atributo da classe.
Tags: ireport, jasperreport, relatórios, pdf


1
Olá Danilo, bem vindo!
Não é exatamente o que você perguntou, mas pode ser que ajude...
Para gerar os reports sem usar SQL eu monto o bean na aplicação e passo para o plugin jasper do Grails, ai em "filds" do jrxml vc cria campos com os mesmos nomes dos atributos do bean que vc passa para este report.

Espero ter ajudado. abs.
01/10/2014 09:37


0
Obrigado Dyego!

Esse "passar o bean para o plugin jasper" como é feito? Basta Criar o domain que o plugin já reconhece?
01/10/2014 11:35


0
Ja tem um tempo que trabalhei com isso, então vou te mandar um exemplo prático e vc adapta para sua realidade.
Neste exemplo eu tenho um atela (GSP) onde o usuário entra filtros de data de início e fim para o relatório:
código GSP:

<g:form url="[action:'createReport']" >
<div class="fieldcontain required">
<label for="startDate">
<g:message code="freight.startDate.label" default="Start Date" />
</label>
<calendar:datePicker name="startDate" dateFormat="%d/%m/%Y" years="1900,2099" />
</div>
<div class="fieldcontain required">
<label for="endDate">
<g:message code="freight.endDate.label" default="End Date" />
</label>
<calendar:datePicker name="endDate" dateFormat="%d/%m/%Y" years="1900,2099" />
</div>
<input type="hidden" name="_format" value="PDF"/>
<input type="hidden" name="dataHora" value=""/>
<input type="hidden" name="_file" value="relatorio_frete"/>
<input type="hidden" name="realPath" value="${realPath}"/><br>
<fieldset class="buttons">
<g:submitButton name="createReport" class="report pdf" value="${message(code: 'freight.button.create.label', default: 'Generate Report')}" />
</fieldset>
</g:form>

Ai na minha controller (método createReport()) eu recebo estes parâmetros e preencho meu objeto que será passado para o jasper(código resumido):

/* formatas a data para o formato dd/mm/yyyy */
dtStart= formatter.parse(params.startDate_value)
params.startDate = formatter.format(dtStart)
dtEnd = formatter.parse(params.endDate_value)
params.endDate = formatter.format(dtEnd)

def results = Delivery.withCriteria {
between("expectedDate", dtStart, dtEnd)
}
ArrayList bean = new ArrayList()
for(result in results){
BeanFreight beanFreight = new BeanFreight()
beanFreight.data = formatter.format(result.expectedDate)
beanFreight.cidadeOrigem = result.dispatcherPlace
beanFreight.cidadeDestino = result.receiverPlace
beanFreight.valorFrete = moneyMask.format(result.freightValue?:0.00).toString()
beanFreight.transportador = result.transporter
bean.add(beanFreight)
}

chain(controller:'jasper',action:'index', model:[data:bean],params:params)


nesta última linha eu passo o array de objetos que o jasper irá utilizar para motar o relatório + "params" que posso capturar no jasper criando variáveis em "parameters" no iReport. sacou?
01/10/2014 16:37



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