iReport qual é a melhor madeira de gerar relatório?
5 respostas
psico.indie
Pessoal queria saber como vocês estão fazendo pra gerar o relátorio.
Estão passando o arquivo, os parametros e a conexão para o preencher os dados usando a query configurada no iReports:
FileInputStream file;
HasMap parametros;
Connection c;
JasperFillManager.fillReport(file, parametros, c)
Ou estão fazendo a consulta via código e passando o resultset:
st = tr.createStatement(1);
rs = st.executeQuery("select * from aluno");
JRResultSetDataSource jr = new JRResultSetDataSource(rs);
JasperPrint print = JasperFillManager.fillReport(fs, parameters, jr);
Alguém sabe como preencher um subrelatório usando o segundo método?
Marky.Vasconcelos
Eu não utilizo sub-relatorios…
Mas… a SQL que eu executo é a que o IReport coloca no arquivo .jrxml com a adição de WHEREs que eu coloco.
Esse é o método que imprimi.
Essa classe Report é apenas uma classe para facilitar o carregamento do relatorio e preenchemento.
Mas a idéia é a segunda forma que voce mostrou.
publicvoidprint(intfirst,intlast){StringBuildersql=newStringBuilder();sql.append("SELECT ");sql.append("motorista.nome AS motorista_nome,");sql.append("veiculo.placa AS veiculo_placa,");sql.append("empresa.cnpj AS empresa_cnpj,");sql.append("empresa.bairro AS empresa_bairro,");sql.append("empresa.cep AS empresa_cep,");sql.append("empresa.cidade AS empresa_cidade,");sql.append("empresa.endereco AS empresa_endereco,");sql.append("empresa.uf AS empresa_uf,");sql.append("empresa.ie AS empresa_ie,");sql.append("empresa.razaoSocial AS empresa_razaoSocial,");sql.append("ordemcoleta.cidade AS ordemcoleta_cidade,");sql.append("ordemcoleta.descricao AS ordemcoleta_descricao,");sql.append("ordemcoleta.destinatario AS ordemcoleta_destinatario,");sql.append("ordemcoleta.obs AS ordemcoleta_obs,");sql.append("ordemcoleta.peso AS ordemcoleta_peso,");sql.append("ordemcoleta.id AS ordemcoleta_id,");sql.append("ordemcoleta.quantidade AS ordemcoleta_quantidade,");sql.append("ordemcoleta.data AS ordemcoleta_data,");sql.append("ordemcoleta.localColeta AS ordemcoleta_localColeta,");sql.append("ordemcoleta.operante AS ordemcoleta_operante,");sql.append("ordemcoleta.solicitante AS ordemcoleta_solicitante ");sql.append("FROM ");sql.append("empresa INNER JOIN ordemcoleta ON empresa.id = ordemcoleta.remetente_fk ");sql.append("INNER JOIN veiculo ON ordemcoleta.veiculo_fk = veiculo.id ");sql.append("INNER JOIN motorista ON ordemcoleta.motorista_fk = motorista.id");try{InputStreamstream=newFileInputStream(newFile("C:/SisGenesis/report/ordemcoleta.jrxml"));Reportreport=newReport(stream);report.setSqlQuery(sql.toString());report.appendWhere("ordemcoleta.id BETWEEN '"+first+"' AND '"+last+"' ");JasperPrintprint=report.fill(HibernateUtil.openSession().connection());JasperViewer.viewReport(print,false,newLocale("pt","BR"));}catch(Exceptione){JOptionPane.showMessageDialog(null,"Erro ao carregar o relatório.");e.printStackTrace();}}