Oi Pessoal , estou precisando de uma ajuda , pois tenho o seguinte problema : preciso gerar um relatório através de um método no java,
eu ja tenho o relatório pronto , usei o iReport para fazer , na verdade eu só preciso chamar este relatório quando eu executar um método em uma classe
ou clicar em um botão.
eu ja tentei vários exemplos mais ainda não consegui fazer ele abrir pelo java.
se poderem me ajudar agradeço desde já.
abraços.
Dá uma olhada aqui: http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource/
No final do tutorial ensina como chamar o relatório por um método.
Bom cara fiz isso faz algum tempo…usava esta classe aqui… é pra funcionar
Qualquer dúvida pergunta…
[ ]s.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.sql.SQLException;
import java.util.HashMap;
import javax.swing.*;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
public class mcManterRelProdutos extends mcBotoesRelatorios implements ActionListener,ItemListener{
JLabel lOrdenarPor, lNome;
JTextField tNome;
JRadioButton rCod, rNome;
ButtonGroup bg;
JComboBox cOrdenarPor;
JPanel painelCampos;
JPanel p1,p2;
public static void main(String[] args) {
mcManterRelProdutos relProdutos = new mcManterRelProdutos();
relProdutos.setVisible(true);
relProdutos.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public mcManterRelProdutos() {
JInternalFrame mcManterRelProdutos = new JInternalFrame("", false, false, false, false);
setTitle("Relatório de Produtos");
setBounds(200, 200,600, 200);
lNome =new JLabel("Digite um nome: ");
lNome.setBounds(40, 40, 200, 40);
lOrdenarPor =new JLabel("Ordenar por: ");
lOrdenarPor.setBounds(50, 20, 200, 40);
tNome =new JTextField(40);
rCod = new JRadioButton("Código");
//lNome.setBounds(100, 30, 200, 20);
rCod.addItemListener((ItemListener) this);
rCod.setSelected(true);
rNome = new JRadioButton("Nome");
rNome.setBounds(100, 30, 200, 20);
rNome.addItemListener((ItemListener) this);
bg = new ButtonGroup();
bg.add(rCod);
bg.add(rNome);
p1 =new JPanel();
p2 =new JPanel();
p2.add(lNome);
p2.add(tNome);
p2.add(lOrdenarPor);
p2.add(rCod); p2.add(rNome);
getContentPane().add(p1);
getContentPane().add(p2);
}
public void actionPerformed(ActionEvent d) {
if(d.getSource() == this.btExecutar)
{
JasperPrint rel = null;
String arq = "MCS_PRODUTO.jasper";//nome do arquivo.jasper
//valor da caixa de texto
String ordem = " ";
if(rCod.isSelected())
{
ordem = "1";
}
if(rNome.isSelected())
{
ordem = "2";
}
try {
BDConecta bd = new BDConecta(); //classe q se conecta com o banco de dados
HashMap map = new HashMap();
//passando parametros para o IReport, se houverem
map.put("proDesc","'%"+tNome.getText()+"%'");//valor da caixa de texto , neste caso para nomes q contenham a expressão digitada
map.put("proOrdem",ordem);//valor para o order by do select do relatório
if(bd.conecta())//conecta-se com o banco
{
String arquivoJasper = arq;
//pega o nome do relatório, passa o parâmetro, e o banco
rel = JasperFillManager.fillReport(arquivoJasper, map,bd.con );
JasperViewer viewer=new JasperViewer(rel,false);//chama o relatório
viewer.setTitle("Relatório de Produtos");
viewer.show();
bd.con.close();
}
else
{ System.out.println("Problemas na conexão...");}
}
catch (JRException e) {
JOptionPane.showMessageDialog(null,e.getMessage());
}
catch (SQLException e) {
e.printStackTrace();
}
}
if(d.getSource() == this.btLimpar)
{
tNome.setText("");
rCod.setSelected(true);
}
if(d.getSource() == this.btSair)
{
dispose();
}
}
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
}
}