Filtrar relatorio no ireport

3 respostas
D

como faço pra filtrar no relatorio um registro se a pessoa colocar no filtro o nome só aparece o registro daquele cliente no relatorio eu fizz a janela filtro de cliente segue abaixo o código e coloquei
a função no botao alguém pode ajudar!

import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.swing.*;

import Modelo.Cliente;
import Modelo.Compra;
import Modelo.Conta;

import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

//import controle.Utilitarios;

// Ctrl+Shift+F => Formata o código
// Ctrl+A e Ctrl+i => Formata a seleção

public class FiltroCliente extends JFrame {
	private JLabel rotulo1;
	private JTextField caixa1;
	private JButton botao1;

	private static EntityManagerFactory fabricaDeEntidades = null;

	private static EntityManager gerenciador = null;
	Cliente objetoCliente;
	public FiltroCliente(EntityManagerFactory fabricaDeEntidades2, EntityManager gerenciador2) {
		super("Filtrar Relatório Cliente");
		Container tela = getContentPane();

		tela.setLayout(null);
		fabricaDeEntidades=fabricaDeEntidades2;
		gerenciador=gerenciador2;

		rotulo1 = new JLabel("Data:");
	
		caixa1 = new JTextField();
		
		botao1 = new JButton("Gerar Relatório");
	

		// coluna, linha, largura, altura
		rotulo1.setBounds(24, 19, 56, 20);
		caixa1.setBounds(75, 19, 56, 20);

		botao1.setBounds(24, 186, 70, 20);
		

		//rotulo2.setBounds(24, 50, 100, 20);
		//caixa2.setBounds(75, 50, 100, 20);

		

		tela.add(rotulo1);
		tela.add(caixa1);

		//tela.add(rotulo2);
		//tela.add(caixa2);

		tela.add(botao1);
	

		botao1.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				objetoCliente = 
					(Cliente)	gerenciador.createQuery(  
                "from Cliente pr WHERE pr.NomeCompleto = :NomeCompleto").setParameter("NomeCompleto", caixa1.getText()).getSingleResult();
				RelatorioCliente rep = new RelatorioCliente(); 
				JasperPrint relat;
				try {
					relat = rep.gerarRelatorioCliente();
					JasperViewer.viewReport(relat, false);
				} catch (Exception e1) {
					e1.printStackTrace();
				}
//				
			}
			});

		// setSize(largura, altura);
		setSize(315, 350);
		setVisible(true);
		setLocationRelativeTo(null);
	}

	public static void main(String[] args) {

		fabricaDeEntidades = Persistence
				.createEntityManagerFactory("TurmaN40PostgreSQL");

		gerenciador = fabricaDeEntidades.createEntityManager();

		FiltroCliente app = new FiltroCliente(fabricaDeEntidades, gerenciador);
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}
}

3 Respostas

otaviojava

Você pode estar passando somente os objetos daquele filtro.
Ex: o usuário faz o filtro você vai no seu dao e retorna os Objetos que estão no banco com aquele filtro e em seguida joga eles para o relatório.

D

minha conexao é essa aqui

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;


public class RelatorioCliente 
{ 
	Connection con;
	
	public JasperPrint gerarRelatorioCliente() 
	throws Exception
	{ JasperPrint rel=null;
	
	String url = "jdbc:postgresql://localhost:5432/TurmaN40";
    try { 
    	Class.forName("org.postgresql.Driver");
    } catch(java.lang.ClassNotFoundException e1) { 
        System.err.print("ClassNotFoundException: "); 
        System.err.println(e1.getMessage()); 
    } 
    try { 
        con = DriverManager.getConnection(url,"postgres", "postgres"); 
    } catch(SQLException ex) { 
        System.err.print("SQLException: "); 
        System.err.println(ex.getMessage()); 

    }

    try	{ // Connection con = Conexao.criaConexao(); 
	HashMap map= new HashMap(); 
	String query = "select * from cliente where data";
	String arquivoJasper= "C:\\vidracaria\\RelatoriodeCliente.jasper"; 
	rel=JasperFillManager.fillReport(arquivoJasper,map,con);
	con.close();
	}
	catch (JRException e)
	{ e.printStackTrace(); 
	} 
	return rel; 
	}
D

eu to usando hibernate nao tenho pq fazer uma dao

Criado 28 de agosto de 2011
Ultima resposta 28 de ago. de 2011
Respostas 3
Participantes 2