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:
JasperReportreport=(JasperReport)JRLoader.loadObject(/* arquivo de relatório aqui */);Connectionconn=DriverManager.getConnection(/* parâmetros de conexão ao banco aqui */);Mapparams=newHashMap();/* ... Preencher parâmetros. Você pode incluir aqui o ID do objeto que leu ... */params.put("ID_OBJETO",id);JasperPrintprint=JasperFillManager.fillReport(report,params,conn);JRViewerviewer=newJRViewer(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
Guguuu
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:
JasperReportreport=(JasperReport)JRLoader.loadObject(/* arquivo de relatório aqui */);Connectionconn=DriverManager.getConnection(/* parâmetros de conexão ao banco aqui */);Mapparams=newHashMap();/* ... Preencher parâmetros. Você pode incluir aqui o ID do objeto que leu ... */params.put("ID_OBJETO",id);JasperPrintprint=JasperFillManager.fillReport(report,params,conn);JRViewerviewer=newJRViewer(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
packageUtil;importorg.apache.log4j.Logger;importorg.hibernate.Session;importorg.hibernate.cfg.Configuration;importorg.hibernate.SessionFactory;importorg.hibernate.cfg.AnnotationConfiguration;publicclassHibernateUtil{privatestaticLoggerlogger=Logger.getLogger(HibernateUtil.class);privatestaticSessionFactoryfactory;static{Configurationconfiguration=newAnnotationConfiguration();configuration.configure();factory=configuration.buildSessionFactory();}publicstaticSessiongetSession(){logger.info("abrindo nova session!");returnfactory.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><propertyname="hibernate.cglib.use_reflection_optimizer">true</property><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="hibernate.connection.password">root</property><propertyname="hibernate.connection.url">jdbc:mysql://localhost/controleos</property><propertyname="hibernate.connection.username">root</property><propertyname="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property><propertyname="hibernate.show_sql">true</property><propertyname="hibernate.format_sql">true</property>//osmapping<mapping...></mapping></session-factory></hibernate-configuration>
classe DAO
importjava.util.List;importorg.apache.log4j.Logger;importorg.hibernate.Criteria;importorg.hibernate.Session;importorg.hibernate.criterion.MatchMode;importorg.hibernate.criterion.Restrictions;importUtil.HibernateUtil;publicclassDAO<T>{privatestaticLoggerlogger=Logger.getLogger(DAO.class);privateClass<T>persistentClass;privateSessionsession=HibernateUtil.getSession();publicDAO(Class<T>persistentClass){this.persistentClass=persistentClass;}//... codigos de pesquisas e insertes;}
fernandopaiva vo la da uma olhada... :D
G
Guguuu
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…
publicvoidabrirComanda()throwsJRException{DefaultTableModelmodelo=newDefaultTableModel();modelo.addColumn("Secretaria");modelo.addColumn("Solicitante");modelo.addColumn("Usuário");OrdemDeServicoo;ctrlOrdemServicoc=newctrlOrdemServico();o=c.busca("1");modelo.addRow(newObject[]{o.getSolicitante().getSecretaria().getSigla(),o.getSolicitante().getNome(),o.getUsuarioResponsavel()});JTabletblPdf=newJTable(modelo);Stringarquivo="Relatorios//teste.jasper";// arquivo de relatoriojava.io.InputStreamfile=getClass().getClassLoader().getResourceAsStream(arquivo);// carrego o arquivoJRTableModelDataSourcetabela=newJRTableModelDataSource(tblPdf.getModel());// aqui eu crio um datasource usando// a propria jtableMapparametros=newHashMap();// apenas crio um map, mas nem passo// parametro nem nada, os parametros sao// as colunas da jtableJasperPrintprinter=JasperFillManager.fillReport(file,parametros,tabela);// aqui eu passo a jtable(tabela) para o relatorioJRViewerview=newJRViewer(printer);// previewJDialogdialog=newJDialog();// jdialog que contem o previewdialog.getContentPane().add(view);// adiciono o previewdialog.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…
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
Guguuu
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.