iReport: relatório com mais de uma página

5 respostas
J

Olá pessoal,

Tem como fazer com que exista mais de uma página no design do iReport? Meu relatório deve utilizar apenas parametros, mas não caberão todos na página.

Tenho pesquisado na net sobre JasperReport e iReport, são muitas dúvidas e poucas soluções.

Agradeço se puderem ajudar.

5 Respostas

H

kra, eu precisei faze 1 relatorio de 3 paginas, e fiz uma gambiarra…
na parte de configurações de relatorio, tem uma opção de titulo em uma nova pagina e sumario em uma nova pagina tbm… vc pode organiza de um jeito que os fields fiquem na band inteira title, outras divididas no meio e outra no summary…de outro jeito nao sei como fazer…

J

Foi o que imaginei.

Pensei em utilizar subrelatórios, onde cada subrelatório conterá uma seção do meu relatório.
O problema é utilizar subrelatórios, sem ter uma conexão com banco, que possibilita utilizar o Wizard do iReport.

Só dá para passar parâmetros, o iReport não reconhece meus beans de jeito nenhum, já mudei o classpath, tentei de várias formas, utilizando FQN para indicar a classe, não reconhece.

É galera… Se alguém tiver um exemplo, ou até mesmo indicar outro framework ou utilitário para gerar relatórios sem ser o Jasper, agradeço.

H

eu criei meus reports sem conexao, utlizando um List contendo todos os fields do relatorio…é isso que vc precisa?

H

se isso te ajuda, um exemplo basico de como criar relatorios com ireport sem precisar de um conexao

public class Inicio {

	public void exibirRelatorio() throws FileNotFoundException
  {
		// Caminho do .jasper do relatorio
		String caminhoRelJasper = "PATH DO ARQUIVO .JASPER";

		// Lista com beans
		List listaLivros = getLivros();

		// Stream com o .jasper 
		InputStream relJasper = new FileInputStream(caminhoRelJasper);

		// O datasource
		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(
				listaLivros);

		// Parametros do relatorios
		Map parametros = new HashMap();

		JasperPrint impressao = null;
		try {

			impressao = JasperFillManager.fillReport(relJasper, parametros, ds);
			JasperViewer viewer = new JasperViewer(impressao, true);
      viewer.setTitle("Relatório de Livros");
			viewer.setVisible(true);      

		} catch (JRException e) {
			System.out.println(e.getMessage());
		}

	}

	public List getLivros() {
		List listaLivros = new ArrayList();
		Livro livro = new Livro();

		livro.setTitulo("Use a cabeça! Padrões de Projeto - Design Patterns");
		livro.setAutor("Freeman, Eric / Freeman, Elisabeth");
		livro.setIsbn("[telefone removido]");
		livro.setEditora("Alta Books");
		livro
				.setDescricao("Como você sabe que não quer reinventar a roda (ou, "
						+ "pior, um pneu furado), "
						+ "então você busca padrões de projetos");
		listaLivros.add(livro);

		livro = new Livro();
		livro.setTitulo("Entendendo e Dominando o Linux");
		livro.setAutor("Morimoto, Carlos");
		livro.setIsbn("[telefone removido]");
		livro.setEditora("Digerati");
		livro
				.setDescricao("Como o nome diz, este livro é uma obra destinada a "
						+ "todos aqueles que "
						+ "pretendem conhecer na prática e em detalhes os "
						+ "principais recursos oferecidos pelo Linux");
		listaLivros.add(livro);

		livro = new Livro();
		livro.setTitulo("Guia de Certificação em Java - Exame CX-310-035");
		livro.setAutor("Pereira, Rafael");
		livro.setIsbn("[telefone removido]");
		livro.setEditora("Ciência Moderna");
		livro.setDescricao("Este Guia de Certificação em Java é um livro "
				+ "fundamental para preparar os"
				+ " candidatos ao exame de programador Java da Sun, "
				+ "a primeira e mais "
				+ "requisitada certificação desta tecnologia.");
		listaLivros.add(livro);

		return listaLivros;
	}

	public static void main(String[] args) throws FileNotFoundException
  {
		new Inicio().exibirRelatorio();
	}
}
classe que armazena os beans, ela é obrigatoria por organizar os fields.
public class Livro
{
  private String titulo;
  private String autor;
  private String editora;
  private String descricao;
  private String isbn;

  public String getTitulo()
  {
    return titulo;
  }

  public void setTitulo(String titulo)
  {
    this.titulo = titulo;
  }

  public String getAutor()
  {
    return autor;
  }

  public void setAutor(String autor)
  {
    this.autor = autor;
  }

  public String getEditora()
  {
    return editora;
  }

  public void setEditora(String editora)
  {
    this.editora = editora;
  }

  public String getDescricao()
  {
    return descricao;
  }

  public void setDescricao(String descricao)
  {
    this.descricao = descricao;
  }

  public String getIsbn()
  {
    return isbn;
  }

  public void setIsbn(String isbn)
  {
    this.isbn = isbn;
  }
}

Vale lembrar que usando beans para preencher o formulario, é necessario que os fields tenham exatamente o mesmo identificador que na classe Bean, nesse caso
String titulo;
String autor;
String editora;
String descricao;
String isbn;

B

olha eu consegui fazer um, “relatorio”, na verdade é a impressão de um formulario de 5 paginas.
mas só consegui fazer no Ireport 3.0.0 e não dentro do netbeans.
Dentro da Ireport tem uma janela: Estrutura do Documento.
1- click com o botão direito do mouse.
2- Assitente de novo grupo de relatório.
abre a tela do assitente
3- coloque o nome do grupo. Ex: pagina 2.
4- no campo “Agrupar pelos objetos do relatorio abaixo”, coloque o campo que é o principal do formulario.
5- click no botão proximo.
ira abrir uma tela com dois check box.
um para o cabeçalho e outro da pagina.
no meu caso eu queria uma informação fixa então so coloquei o cabeçalho.

Pronto agora é so modelar o relatorio da forma como quiser e se quiser mais paginas faça o mesmo procedimento.

Criado 7 de março de 2007
Ultima resposta 13 de jan. de 2009
Respostas 5
Participantes 3