Olá Pessoal, meu problema é o seguinte, sou iniciante em ireport, a versão que estou usando é a 3.7 com JSF 1.2 e JPA - ja olhei os posts no forum mas não consegui resolver o problema. Vamos ao problema, tenho uma busca de uns agendamentos realizados que tem a opção de buscar por data, isso já esta funcionando, criei um link "Gerar relatorio" que chama o metodo para gerar o relatório onde tenho a intenção de gerar o relatório pela data selecionada na busca dos agendamentos, mas da dando erro, poderiam me ajudar?
Meu código java:
//método para a consulta a ser utilizada
private String consultaComprados(){
String query = "SELECT a.paciente, a.procedimento, a.medico, a.convenio, a.statusCor, a.observacao " +
" FROM AgendaCirurgica a" +
" WHERE a.sala <> 2 AND a.dtCirurgia :dtCirurgia" +
" GROUP By a.sala, a.dtCirurgia";
return query;
}
private List<?> todosResultsPesq(){
Map<String, Object> params = new HashMap<String, Object>();
params.put("dtCirurgia", new Timestamp(dtCirurgia.getTime()));
return agendaCirurgicaDao.listPesqParam(consultaComprados(),params);
}
@SuppressWarnings("unchecked")
// executa o relatório através do actionListener
public void executarRelatorio(ActionEvent action) throws ParseException {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
// pega o caminho do arquivo .jasper da aplicação
InputStream reportStream = context.getExternalContext().getResourceAsStream(
"/relatorios/agendaBlocoCirurgico.jasper");
// envia a resposta com o MIME Type PDF
response.setContentType("application/pdf");
/*
* força a abertura de download
* response.setHeader("Content-disposition",
* "attachment;filename=relatorio.pdf");
*/
try {
ServletOutputStream servletOutputStream = response.getOutputStream();
// envia o título para o relatório, usando o parâmetro criado
Map<String, String> parametros = new HashMap<String, String>();
parametros.put("TITULO",
"Relatório - Agenda do Bloco Cirúrgico");
List dados = new ArrayList();
Map record = null;
//varre a consulta e separa os objetos
for (Iterator iterator = todosResultsPesq().iterator();
iterator.hasNext();) {
Object[] o = (Object[]) iterator.next();
record = new HashMap();
// coloca em um Map cada um dos campos criados
// manualmente pelo relatório
record.put("paciente", o[0].toString());
record.put("procedimento", o[1].toString());
record.put("medico", o[2].toString());
record.put("convenio", o[3].toString());
record.put("statusCor", o[4].toString());
record.put("observacao", o[5].toString());
// adiciona o List dados
dados.add(record);
}
// cria uma fonte de dados para coleções
JRBeanCollectionDataSource fonteDados = new JRBeanCollectionDataSource(dados);
// envia para o navegador o PDF gerado
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, null, fonteDados);
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// evita erro do JSF após completar
// a geração do relatório
// avisando o FacesContext que a resposta está completa
context.responseComplete();
}
}
Minha pagina:
Erro::>>>>>>>
09:09:41,146 ERROR PARSER:33 - line 1:171: unexpected token: :
02/12/2010 09:09:41 javax.faces.event.MethodExpressionActionListener processAction
SEVERE: Received 'java.lang.IllegalArgumentException' when invoking action listener '#{agendaCirurgicaController.executarRelatorio}' for component 'j_id107'
02/12/2010 09:09:41 javax.faces.event.MethodExpressionActionListener processAction
SEVERE: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: : near line 1, column 171 [SELECT a.paciente, a.procedimento, a.medico, a.convenio, a.statusCor, a.observacao FROM br.com.scp.intranet.modelo.AgendaCirurgica a WHERE a.sala <> 2 AND a.dtCirurgia :dtCirurgia GROUP By a.sala, a.dtCirurgia]
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:624)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:96)
at sun.reflect.GeneratedMethodAccessor57.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:358)
at $Proxy70.createQuery(Unknown Source)
at sun.reflect.GeneratedMethodAccessor57.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:198)
at $Proxy24.createQuery(Unknown Source)
at br.com.tw.daogenerico.imp.DaoGenericoImp.listPesqParam(DaoGenericoImp.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy65.listPesqParam(Unknown Source)
at br.com.scp.intranet.controller.AgendaCirurgicaController.todosResultsPesq(AgendaCirurgicaController.java:529)
at br.com.scp.intranet.controller.AgendaCirurgicaController.executarRelatorio(AgendaCirurgicaController.java:565)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)