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 pode me dizer a melhor prática?

5 Respostas

Marky.Vasconcelos

Eu uso a segunda forma.

psico.indie

Ja trabalhou com subrelatórios?

furutani

Olá
A segunda forma é mais interessante.

psico.indie

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.

public void print(int first, int last) {
				StringBuilder sql = new StringBuilder();
				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 {
					InputStream stream = new FileInputStream(new File(
							"C:/SisGenesis/report/ordemcoleta.jrxml"));

					Report report = new Report(stream);

					report.setSqlQuery(sql.toString());
					report.appendWhere("ordemcoleta.id BETWEEN '" + first
							+ "' AND '" + last + "' ");
					JasperPrint print = report.fill(HibernateUtil.openSession()
							.connection());

					JasperViewer.viewReport(print, false,
							new Locale("pt", "BR"));
				} catch (Exception e) {
					JOptionPane.showMessageDialog(null,
							"Erro ao carregar o relatório.");
					e.printStackTrace();
				}
			}
Criado 4 de dezembro de 2008
Ultima resposta 4 de dez. de 2008
Respostas 5
Participantes 3