Olá galera!
Tem tempo que eu tô com um problema aqui para gerar um relatório que recebe uma query da minha aplicação e passa como parâmetro o número do pedido para a query do sub relatório.
Tá acontencendo o seguinte:
quando eu rodo a minha aplicação aparece a menssagem dizendo que o documento não contém página, mas acontece que a query que eu passo está correta, adicionei o parâmetro passando o field do relatório para o sub relatório (seu eu compilar só o sub relatório passando o parâmetro ele roda blz).
Vou passar o código da minha aplicação que monta o reltório principal e passa a consulta para o relatório.
Desde já agradeço!
public void geraRelatorioPedAgrupado(String unidade, Integer idUnidade, java.util.Date dataInicial, java.util.Date dataFinal) throws JRException, Exception
{
//Formatação de data p/ aparecer no período do relatório (mandado via parametro hashMap
String dataInicialParm = new SimpleDateFormat("dd/MM/yyyy").format(dataInicial);
String dataFinalParm = new SimpleDateFormat("dd/MM/yyyy").format(dataFinal);
//Formatação de data p/ mandar pelo ResultSet para o relatório
String dataInicialJrRs = new SimpleDateFormat("yyyy-MM-dd").format(dataInicial);
String dataFinalJrRs = new SimpleDateFormat("yyyy-MM-dd").format(dataFinal);
Connection con = getConnection( );
Statement stm = con.createStatement( );
String query = "SELECT DISTINCT\"PED_IDDOOBJETO\", \"UNI_DESCRICAO\", \"PED_DATA\", \"PED_TOTAL\", \"PES_NOME\" FROM \"PEDIDOS\", \"UNIDADES\", \"ITENSPEDIDO\", \"PESSOA\" WHERE \"PED_IDUNIDADE\" = "+idUnidade+" AND \"PED_DATA\" >= '"+dataInicial+"' AND \"PED_DATA\" <= '"+dataFinal+"' AND\"PED_IDDOOBJETO\" = \"ITEPED_IDPEDIDO\" AND \"PED_IDUNIDADE\" = \"UNI_IDDOOBJETO\" AND \"PED_IDUSUARIO\" = \"PES_IDDOOBJETO\";";
ResultSet rs = stm.executeQuery( query );
/* implementação da interface JRDataSource para DataSource ResultSet */
JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
/* HashMap de parametros utilizados no relatório. Sempre instanciados */
Map parameters = new HashMap();
parameters.put("unidade", unidade);
parameters.put("dataInicial", dataInicialParm);
parameters.put("dataFinal", dataFinalParm);
/* Preenche o relatório com os dados.*/
String jasperPrint = JasperFillManager.fillReportToFile( "Relatórios/PedidosAgrupados.jasper", parameters, jrRS );
JasperViewer viewer = new JasperViewer(jasperPrint, false, false);
viewer.setExtendedState(JasperViewer.MAXIMIZED_BOTH);
viewer.setVisible(true);
}
