Relatório Ireport

7 respostas
rodolpho.netto

Instalei o Ireport como plugin e até consegui fazer um relatório mas apenas usando a query dele tipo "SELECT * FROM tabela

eu preciso que a pessoa entre em um jframe com data inicio e data fim, clique num botão e isso abraça o relatório levando em conta os parametros que ela digitou, como faço isso? alguem tem algum exemplo?

7 Respostas

Danilo_Carvalho

Você pode passar dados para o relatórios por parâmetros.

public HashMap<String, Object> getParameters() {
		HashMap<String, Object> parameters = new HashMap<String, Object>();
		
		parameters.put("date_initial", getDateInitial());
		parameters.put("date_finish", getDateFinish());

		return parameters;
	}

Esse getParameters() é informado no construtor no seu metódo que criar o Ireport.

No seu ireport você cria esse dois parâmetros.

Eu acho mais facil fazer o select e toda a parte lógica em java e depois enviar o arrayList para o ireport, já que no java voce ja tem toda a conexão com o banco e parte de DAO já prontas.

Se precisar de mais alugma coisa só postar ai. espero ter ajudado, até mais.

rodolpho.netto

Ai é que está o problema não tenho construtor no meu report, eu até achei interessante a idéia de passar um arraylist pra ele, você pode me ajudar a por exemplo pegar o resultado do resultset guardar em um arraylist e passar para um relatório? obrigado!

Danilo_Carvalho

Para enviar um ArrayList para o Ireport voce precisa fazer o seguinte:

JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(arrayList);

Depois passar o dataSource para o ireport, voce precisara criar todos os atributos que existem no sua entidade na sessão fields do ireport.

Só não entendi como seu ireport não tem um construtor, pois no mesmo lugar onde sera passado o dataSource é onde deve ir o getParameter, pois acho que é o melhor jeito,
pois cabeçalhos e rodapés são conteúdo estáticos e todo conteúdo estático é enviado por parâmetro.

Qualquer coisa posta novamente ai, ate mais.

rodolpho.netto

Então, está bem confuso cara, você nao tem um exemplo disso?

Danilo_Carvalho

Vou enviar um exemplo com tudo que eu disse.

Só para saber você esta em uma aplicação desktop certo?

Danilo_Carvalho

Segue abaixo um exmplo:

public void createReport() {
		
		JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(arrayList);
		
		try {
			HashMap<String, Object> parametros = new HashMap<String, Object>();

                         parametros.put("date_intial", dateInitial);
                        parametros.put("date_finish", dateFinish);

			JasperPrint jasperPrint = JasperFillManager.fillReport(controller.class.getResourceAsStream("/jasper/report.jasper"), parametros, dataSource);

			JasperViewer jasperViewer = new JasperViewer(jasperPrint, false);
			jasperViewer.setExtendedState(JasperViewer.MAXIMIZED_BOTH);
			jasperViewer.setVisible(true);

		} catch (JRException e) {
			e.printStackTrace();
		}
	}

esta ai toda a parte java para enviar dados para seu relatório, é um exemplo simples, ser precisar e ajuda com a parte de Ireport, só dizer, até mais, espero ter ajudado

rodolpho.netto

Nesse caso eu faço esse metodo na classe que faz o select né? dai eu faço o resultset criar um arraylist e passo ele pro ireport nessa hora né?

JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(arrayList);
Criado 3 de setembro de 2012
Ultima resposta 3 de set. de 2012
Respostas 7
Participantes 2