Ireport + Eclipse + J2SE

8 respostas
G

Bom… sei q tem varios topico com isso mais eu nao consegui fazer roda…

1 - Ja gerei o relatorio onde vai receber um ID …ae quero q o select q o Ireport faça tenha uma Where comparando esse ID

2 - Tenho um Objeto …

public void chamaPdf(){

DAO<OrdemServico> dao = new DAO<OrdemServico>(OrdemServico.class);
OrdemServico os = dao.buscaById("1");

//blz... ae peguei a "os" do id = 1 por exemplo.
//e agora como faço pra chamar o relatorio
//o nome dele eh "PIT2.jasper", "PIT2.jrxml"


// pedir propriedade..
//local: C:\Users\Carlos\Desktop\workDel\ControleOS\src\Relatorios\PIT2.jrxml
//caminho: /ControleOS/src/Relatorios/PIT2.jrxml

// local: C:\Users\Carlos\Desktop\workDel\ControleOS\src\Relatorios\PIT2.jasper
//caminho: /ControleOS/src/Relatorios/PIT2.jasper

}

Obrigado ae galera… desculpa se to pedindo d mais… mais eh q ja tem tempo q to tentando e nao consegui.

8 Respostas

R

Inclua um parâmetro chamado “ID_OBJETO” na definição do seu relatório através do iReport. Faça com que a consulta do relatório use o ID que você passará como parâmetro, deve ficar algo no estilo “SELECT t.campo_1, t.campo_2 FROM tabela t WHERE t.id = $P{ID_OBJETO}”. Aí é só passar o parâmetro para o relatório via programação:

JasperReport report = (JasperReport) JRLoader.loadObject(/* arquivo de relatório aqui */);
Connection conn = DriverManager.getConnection(/* parâmetros de conexão ao banco aqui */);
Map params = new HashMap();
/* ... Preencher parâmetros. Você pode incluir aqui o ID do objeto que leu ... */
params.put("ID_OBJETO", id);
JasperPrint print = JasperFillManager.fillReport(report, params, conn);
JRViewer viewer = new JRViewer(print);
/* [viewer] é um componente gráfico que pode ser adicionado a qualquer painel */
fernandopaiva

da uma olhada


acho q o segundo link ira te ajudar…

t+ e boa sorte.

G
roger_rf:
Inclua um parâmetro chamado "ID_OBJETO" na definição do seu relatório através do iReport. Faça com que a consulta do relatório use o ID que você passará como parâmetro, deve ficar algo no estilo "SELECT t.campo_1, t.campo_2 FROM tabela t WHERE t.id = $P{ID_OBJETO}". Aí é só passar o parâmetro para o relatório via programação:
JasperReport report = (JasperReport) JRLoader.loadObject(/* arquivo de relatório aqui */);
Connection conn = DriverManager.getConnection(/* parâmetros de conexão ao banco aqui */);
Map params = new HashMap();
/* ... Preencher parâmetros. Você pode incluir aqui o ID do objeto que leu ... */
params.put("ID_OBJETO", id);
JasperPrint print = JasperFillManager.fillReport(report, params, conn);
JRViewer viewer = new JRViewer(print);
/* [viewer] é um componente gráfico que pode ser adicionado a qualquer painel */

No meu ireport nao ja tem as config de conexao com o banco ? mesmo assim tenho q passar uma Conn ?
se precisar eu uso o Hibernate... hibernate.cfg.xml , HibernateUtil, uma classe generica DAO... como fasso pra passar a Conn nesse caso?

HibernateUtil
package Util;


import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

	private static Logger logger = Logger.getLogger(HibernateUtil.class);
	private static SessionFactory factory;
	
	static{
		
		Configuration configuration = new AnnotationConfiguration();
		configuration.configure();
		factory = configuration.buildSessionFactory();

	}
	
	public static Session getSession(){
		logger.info("abrindo nova session!");
		return factory.openSession();
	}
	
}
hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>  
<!DOCTYPE hibernate-configuration PUBLIC  
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.cglib.use_reflection_optimizer">true</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/controleos</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
      	<property name="hibernate.show_sql">true</property>  
		<property name="hibernate.format_sql">true</property> 
       
		//os mapping <mapping ... ></mapping>
		
        
    </session-factory>
</hibernate-configuration>
classe DAO
import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

import Util.HibernateUtil;

public class DAO<T> {

	private static Logger logger = Logger.getLogger(DAO.class);

	private Class<T> persistentClass;

	private Session session = HibernateUtil.getSession();

	public DAO(Class<T> persistentClass) {

		this.persistentClass = persistentClass;

	}

//... codigos de pesquisas e insertes;
}

fernandopaiva vo la da uma olhada... :D

G

fernandopaiva:
da uma olhada


acho q o segundo link ira te ajudar…

t+ e boa sorte.

cara… do jeito q vc fez com o array pra mim serve tb… so me diz como vc fez pra linkar esse valores do array com os parametros do iReport…

G

alguem?

G

To tentando fazer q nem o post…
http://www.guj.com.br/java/225496-ireport-sem-conexao-ao-bd-usando-jtable-
so q deu erro!!

minha classe deleta eh a que chama… ta com esse nome so pra teste.

Exception in thread "main" net.sf.jasperreports.engine.JRRuntimeException: No such parameter REPORT_CONTEXT
	at net.sf.jasperreports.engine.fill.JRFillDataset.getParameterValue(JRFillDataset.java:1050)
	at net.sf.jasperreports.engine.fill.JRFillDataset.getParameterValue(JRFillDataset.java:1031)
	at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:559)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1237)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:869)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:832)
	at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:605)
	at Controle.chamaRelPit.abrirComanda(chamaRelPit.java:56)
	at Relatorios.deleta.main(deleta.java:30)

pq do erro alguem sabe?

public void abrirComanda() throws JRException {

		DefaultTableModel modelo = new DefaultTableModel();

		modelo.addColumn("Secretaria");
		modelo.addColumn("Solicitante");
		modelo.addColumn("Usuário"); 

		
		OrdemDeServico o;
		ctrlOrdemServico c = new ctrlOrdemServico();
		 o = c.busca("1");
		 
		 modelo.addRow(new Object[] {  
					o.getSolicitante().getSecretaria().getSigla(),
					o.getSolicitante().getNome(),  
					o.getUsuarioResponsavel()  });
		
		JTable tblPdf = new JTable(modelo);

		String arquivo = "Relatorios//teste.jasper"; // arquivo de relatorio
		java.io.InputStream file = getClass().getClassLoader()
				.getResourceAsStream(arquivo); // carrego o arquivo
		JRTableModelDataSource tabela = new JRTableModelDataSource(
				tblPdf.getModel()); // aqui eu crio um datasource usando
											// a propria jtable
		Map parametros = new HashMap(); // apenas crio um map, mas nem passo
										// parametro nem nada, os parametros sao
										// as colunas da jtable
		JasperPrint printer = JasperFillManager.fillReport(file, parametros, tabela); // aqui eu passo a jtable(tabela) para o relatorio
		JRViewer view = new JRViewer(printer); // preview
		JDialog dialog = new JDialog(); // jdialog que contem o preview
		dialog.getContentPane().add(view); // adiciono o preview
		dialog.setSize(800, 600);
		// dialog.setLocationRelativeTo(this);
		dialog.setModalityType(ModalityType.APPLICATION_MODAL);
		dialog.setModal(true);
		dialog.setVisible(true);
	}
fernandopaiva

pra vc pegar os parametros no iReport basta criar os fields e parameters la no seu relatorio iReport…

aqui os parametros

Map parametros = new HashMap();
parametros.put("nomeparametro", valorparametro);

no iReport vc cria um parameter com “nomeparametro” q vai receber o valor. Para fields eh a mesma coisa, soh q ele vai pegar os valores da coluna do JTable, ai vc cria os fields COLUMN_0, COLUMN_1 assim sucessivamente.

t+

G

vlw ae Fernandopaiva …

para os proximo q tiver o mesmo problema…

eu desinstalei tudo e instalei d novo… usei o codigo o fernandopaiva… ae funfo…
acredito q seje algum problema de versao.

vlw … flw´s

Criado 20 de setembro de 2011
Ultima resposta 21 de set. de 2011
Respostas 8
Participantes 3