JAVA JSP & iReport

Fala ae galera,

Alguém ai já precisou criar um relatório com iReport e precisa criar uma forma com java para abrir ele ? O problema é o seguinte, já peguei as libs do Jasper etc, mais não sei como criar método ou classe para ser gerado o relatório.

Alguém, poderia postar algum modelo disso ?

Também estou com dificuldade de configurar o relatório para receber parâmetros, eu tenho 3 tabelas no documento e cada tabela tem uma query diferente, preciso que cada uma delas receba o parâmetro vindo do java como chave primaria etc.

Aguardo com a contribuição de vocês.
Desde já agradeço a todos.

Acho que isso vai lhe ajudar:

http://www.k19.com.br/artigos/relatorios-em-java-jasperreports-e-irepor/

Boa sorte.

Vale Fexx vou dar uma olhada agora mesmo.

Sobre como o jasper receberá os parametros pode-se utilizar um bean que será repassado para o jasper e imprimir o relatório. Existe outras opções como executar a consulta pelo jasper e etc, mas acho que não é seu caso.

Está utilizando algum framework MVC ?

Eu utilizo o Struts 2 que contem um plugin para o jasper, isso facilita muito na hora de passar os parametros para o relatorio

cara ajuda foi muito boa, só não estou etendo a parte da lista, em que ele diz assim: 3 - o data source. Note que nao devemos passar a lista diretamente, // e sim “transformar” em um data source utilizando a classe // JRBeanCollectionDataSource. Para que serve isso, no caso o JasperFillManager.fillReport recebe argumentos, ( RELATORIO, PARAMETRO PARA O RELATORIO e a lista) que lista seria essa ?

Se percebeu, ele não está fazendo uma consulta no banco, ou seja não utilizou sql, os dados que ele exibiu no relatório, é os que ele setou da classe Cliente, para ele exibir todos os dados setados, ele adicionou Cliente c1, c2 e c3, em uma lista, e depois exibiu passando a lista na classe JRBeanCollectionDataSource.

Eu to trabalhando com JSP, eu tenho uma comboBox que seleciona valores do banco de dados e exibi nela, ai tenho uma classe que extend HttpServlet e pega o valor selecionado String parametro = request.getParameter(“imprimir”);

A principio eu quero pegar esse valor e jogar para o Ireport, sendo que não sei como fazer, e lá no iReport 4.5 estou com dificuldade também de configurar o relatório para receber parametro.

Sim eu percebi isso agora da lista.

Ele não pode passar uma lista diretamente, para JasperFillManager.fillReport(relatorio, parametro, lista), nenhum método sobrecarregado de fillReport aceita uma lista, mas aceita um dataSource, então se quiser passar uma lista tem que transformar em um dataSource.

um exemplo simples com parâmetros:


public JasperPrint relatorioClientesPorProdutos(Produto idproduto){
		JasperPrint print = null;
		try {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("CodigoProduto", idproduto.getCodigoProduto());
			String localRelatorio = "relatorios/ClientesPorProdutos.jasper";
			print = JasperFillManager.fillReport(localRelatorio, map, getConn());
			return print;
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "Não foi possivel exibir relatorio  - Clientes por Produtos  "+e.getMessage());
			return null;
		}
	}

E Exiba assim:

public static void main(String[] args) {
		ProdutosRelatorios p = new ProdutosRelatorios();
		Produto p = new Produto();
		p.setIdProduto(2);
		JasperPrint print = p.relatorioClientesPorProdutos( p );
		JasperViewer.viewReport(print, false);
	}

Boa sorte.