iReport: Como chamar um relatorio no netbeans?

10 respostas
J

Seguinte, criei o meu relatorio no netbeans tudo blz, mais nao sei como faço para chamar este relatorio em minha aplicação,
fiz um pacote chamado relatorios dentro da aplicação e estou travado nesta parte.

Como faço para exibir este meu relatorio quando o usuario clicar em um item de menu por exemplo?

Obrigado.

10 Respostas

D

[]´s

J

Vlws cara, dei uma lida no tutorial, mais nao quero um relatorio tao complexo, quero um relatorio bem simples mesmo, só pra exibir os dados cadastrados na tela e beleza, fiz esse código, mais esta dando erro, e nao to conseguindo achar pq, debuguei o programa e o erro esta sendo acusado na linha 20, nao tenho nem ideia do por que oO

package sgia.relatorios.report;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
import sgia.DAO.CompraJpaController;
import sgia.erros.ErroException;

public class RelatorioCompra {

    public void gerarRelatorio() {

        CompraJpaController jpaCompra = new CompraJpaController();

        JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(jpaCompra.findCompraEntities());
        try {
            JasperPrint report = JasperFillManager.fillReport("./relatorios/relatorioCompra/compra.jasper", null, dataSource);
            JasperViewer viewer = new JasperViewer(report, false);
            viewer.setVisible(true);
        } catch (JRException ex) {
            throw new ErroException("Erro ao gerar relatório de compra", ex);
        }
    }
}

ele cai na excessao ali “Erro ao gerar relatorio de compra”, e eu nao to conseguindo acha o erro.

F

Coloquei assim:

package relatorio;

/**
 *
 * @author Gonçalves
*/
 import controladoresJPA.AnimalJpaController;
 import entidades.Animal;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import javax.swing.JOptionPane;
 import net.sf.jasperreports.engine.JRDataSource;
 import net.sf.jasperreports.engine.JasperFillManager;
 import net.sf.jasperreports.engine.JasperPrint;
 import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
 import net.sf.jasperreports.view.JasperViewer;

public class Relatorio {
 List<Animal> animalList;

 public void Relatorio(){

         AnimalJpaController ani = new AnimalJpaController();
         animalList = ani.findAnimalEntities();

         if( animalList.size() == 0 )
         {
         Map<String, String> parametros = new HashMap<String, String>();
         parametros.put("titulo", "Relatório de Animais da Fazenda");

         try {
         JRDataSource collection = new JRBeanCollectionDataSource( animalList );

         JasperPrint impressao = JasperFillManager.fillReport("C:\Users\Gonçalves\Documents\NetBeansProjects\Fazenda\src\relatorio\nascidosnafazenda.jasper", parametros, collection);

         JasperViewer.viewReport(impressao);

         } catch (Exception ex) {
         System.out.println(ex.getMessage());
         ex.printStackTrace();
         }
         }
         else
         {
         JOptionPane.showMessageDialog(null, "Não há dados cadastrados");
         }
 }
 //Teste
 public static void main(String args[]){
     Relatorio rl = new Relatorio();
     rl.Relatorio();

 }
 }

Mais continua dando erro nessa linha:

JasperPrint impressao = JasperFillManager.fillReport("C:\Users\Gonçalves\Documents\NetBeansProjects\Fazenda\src\relatorio\nascidosnafazenda.jasper", parametros, collection);
F

Obs.: Minha aplicação é feita em Hibernate .

J

eu faço assim

public void listagemCliente() throws Exception {
		
		OutputStream outputStream = FacesContext.getCurrentInstance().getExternalContext().getResponseOutputStream();
		
		List<Cliente> list;
		
		if ("".equals(this.filtro) || (this.filtro.length() == 0)) {
			list = Cliente.findClientesListagem();  	
		} else {
			list = getClienteList();
		}
			
		UserLogado user = (UserLogado) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
		
		Map<String,String> parameters = new HashMap<String, String>();
		parameters.put("nomeUsuario",user.getNomeUsuario());
		
		List<Map<String,String>> campos = new LinkedList<Map<String,String>>();
		
		String cdIdentificadorCliente;
		
		for (Cliente cliente: list) {
			cdIdentificadorCliente = Cliente.findMenorCodigoPorCgcCpf(cliente);
			cdIdentificadorCliente = cdIdentificadorCliente+Funcoes.Modulo11(cdIdentificadorCliente);		
			cdIdentificadorCliente = cdIdentificadorCliente+Funcoes.Modulo11(cdIdentificadorCliente);
			
			
			Map<String,String> map = new HashMap<String,String>();
			map.put("Grupo", cliente.getCdGrupoEmitente());
			map.put("Codigo", cliente.getCdEmitente());
			map.put("RazaoSocial", cliente.getRzSocialEmitente());
			map.put("Cidade", cliente.getNmCidadeEmit());
			map.put("UF", cliente.getCdEstado());
			map.put("GRM", cliente.getCdGerenciaMarketing());
			map.put("GRV", cliente.getCdGerenciaVenda());
			map.put("GRA", cliente.getCdGerenciaArea());
			map.put("CdIdentificador",cdIdentificadorCliente);
			
			campos.add(map);
		}
		
		JasperReport jasperReport = (JasperReport) JRLoader.loadObject(getClass().getResourceAsStream("/listCliente.jasper"));
		
		JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JRMapCollectionDataSource(campos));
		
		JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
		
		FacesContext.getCurrentInstance().responseComplete();
	}
F

Oh Jacomete sua aplicação é em Hibernate?

J

eh sim, nessa aplicação uso hibernate, jsf, richfaces, spring securty, e spring roo

todos os relatorio estou fazendo dessa forma, para chamar na pagina ficou assim:

<rich:panelMenuItem label="Relatório Clientes" action="#{clienteController.listagemCliente}" target="_blank">  
        <f:setPropertyActionListener  target="#{clienteController.filtro}" value="" />
      </rich:panelMenuItem>

no meu caso eu uso limpo a propiedade clienteController.filtro pq eu chamo esse relatório da pagina de pesquisa tambem ai nesse caso tenho que considerar o filtro

espero ter ajudado

F

esqueci de pergunta, A sua é aplicação aplicação web ou descktop ?

J

eh web.

J

esqueci de mencionar que eu uso o maven e nele tem como colocar um plugin para compilar automatico os relatorios em jasper

<dependency>
		<groupId>net.sf.jasperreports</groupId>
		<artifactId>jasperreports</artifactId>
		<version>3.7.6</version>
	</dependency>

		<plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>jasperreports-maven-plugin</artifactId>
			<version>1.0-beta-2</version>
			<executions>
				<execution>
					<phase>compile</phase>
					<goals>
						<goal>compile-reports</goal>
					</goals>
				</execution>
			</executions>
			<dependencies>
				<dependency>
					<groupId>net.sf.jasperreports</groupId>
					<artifactId>jasperreports</artifactId>
					<version>3.7.6</version>
					<exclusions>
						<exclusion>
							<groupId>com.lowagie</groupId>
							<artifactId>itext</artifactId>
						</exclusion>
						<exclusion>
							<groupId>jfree</groupId>
							<artifactId>jfreechart</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.codehaus.groovy</groupId>
					<artifactId>groovy-all</artifactId>
					<version>1.7.1</version>
				</dependency>
				<dependency>
					<groupId>com.lowagie</groupId>
					<artifactId>itext</artifactId>
					<version>2.1.7</version>
				</dependency>
				<dependency>
					<groupId>jasperreports</groupId>
					<artifactId>jasperreports</artifactId>
					<version>1.2.0</version>
					<scope>runtime</scope>
				</dependency>
				<dependency>
					<groupId>jfree</groupId>
					<artifactId>jfreechart</artifactId>
					<version>1.0.9-brew</version>
					<scope>runtime</scope>
				</dependency>
				<dependency>
					<groupId>log4j</groupId>
					<artifactId>log4j</artifactId>
					<version>1.2.13</version>
				</dependency>
			</dependencies>
		</plugin>
Criado 9 de dezembro de 2010
Ultima resposta 10 de dez. de 2010
Respostas 10
Participantes 4