Gerar Relatório

12 respostas
S

Instalei o plugin do jasper report… criei um relatorio nele… mais agora não sei como chamar esse relatorio por um botão na aplicação desktop que estou fazendo…

alguem pode me ajudar?

12 Respostas

UMC

da uma olhada podera usar essa classe que tem ae:
http://www.guj.com.br/posts/list/141363.java
vlw
abs

S

mais minha aplicação é desktop… e nem deu certo fazer os imports.

zoren

para os imports não funcionarem, vc deve ter esquecido de incluir os jars do jasper no seu classpath

o código pra chamar o relatório fica idêntico tanto na web quanto em desktop, só muda o jeito que vc chama a ação e passa os parâmetros

willricardo

Cara seta os jars no classpath:
commons-collections-2.1.jar
commons-javaflow-20060411.jar
commons-logging-api-1.0.2.jar
iReport.jar
iText-2.1.5.jar
jasperreports-3.1.4-javaflow.jar

depois segue abaixo a chamada do relatorio, coloque em um evento do JButton.

//Compila o aplicativo Jasper
                JasperFillManager.fillReportToFile(jasper, jrprint,parameters, jrs);                                                                      
        	
                //Entra no modo de visualização do JasperReport
                JasperViewer.viewReport(jrprint, false, false);

Abraços!

S

para colocar os pontos jar eh nas variavels de ambiente? se for eu coloco em qual local das variaveis?

eu eu coloco no proprio netbeans?

Obrigado

zoren

no netbeans

S

fui em biblioteca add.jar e coloquei os que vc falo… menos o iReport.jar e jasperreports-3.1.4-javaflow.jar que não tinha…
e akele comando para compilar não deu certo… pois nem possui os imports

T

Da uma olhada nesse código tava com o mesmo problema, e funcionou, ve se te ajuda:

package Relatorios;

import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import Utilitarios.conexao;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.*;

public class Relat_Acervo{

    conexao con = new conexao();// possuo uma classe conexão
    
    public Relat_Acervo(){

        try
        {
            con.conecta();// possuo um metodo conecta na classe conexão
            JOptionPane.showMessageDialog(null,"CONECTADO","CONECTOU",JOptionPane.INFORMATION_MESSAGE);//TESTANDO CONEXÃO COM BANCO OK
            con.executeSQL("select * from Cad_Acervo");//MINHA TABELA DO BANCO ONDE QUERO QUE TRAGA OS DADOS
            JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
            JasperPrint jasperPrint = JasperFillManager.fillReport("Relatorios/Relat.jasper", new HashMap(), jrRS);// O RELATÓRIO ESTA NA PASTA RELATÓRIO
            //JasperExportManager.exportReportToPdfFile(jasperPrint, "Relatorios/Relatorio_Acervos.pdf");
            JasperViewer.viewReport(jasperPrint);
        }
        catch(Exception erro)
        {
            JOptionPane.showMessageDialog(null, " Erro "+erro);
        }
    }
    public static void main(String args[]) {

                new Relat_Acervo();
            }
}

Também tive problema na versã do iReport 3.6.4 que não conseguia chamar o relatório, instalei a 1.5 e rodou, pode ser a bilioteca

UMC

eu uso o Ireport 3.0
aqueles imposts e so vc retira o que faz ligção com servelet…
dora isso e so colocar para rodar.
rs
vlw
abs

S

eu consegui arrumar os imports colocando os .jar
Agora minha duvida eh como abrir o relatorio, tenho esse metodo de consulta

public List consultar(String parametro, String parametro2) {



        List<Produto> strList = new ArrayList<Produto>();
        try {

            Connection conn = Conexao.getConnection();

            String sql = null;
sql = "select produtos.idproduto,produtos.nomeproduto,marcaproduto.nomemarca,produtos.descricao,produtos.localizacao_produto,produtos.validade,produtos.valorproduto,produtos.quantidadeestoque,unidades.nomeunidade where produtos.nomeproduto like ? and produtos.descricao like ? and marcaproduto.idmarca=produtos.idmarcaproduto and unidades.idunidade = produtos.idunidade";


           PreparedStatement pst = conn.prepareStatement(sql);
            pst.setString(1, parametro);
            pst.setString(2, parametro2);
            ResultSet rs = pst.executeQuery();



            while (rs.next()) {


Produto produto = new Produto();

               produto.setId(rs.getInt("idproduto"));

             produto.setNomeProduto(rs.getString("nomeproduto"));


             MarcaProduto marca = new MarcaProduto();
             marca.setNomeMarca(rs.getString("nomemarca"));

           produto.setMarcaproduto(marca);

             produto.setDescricao(rs.getString("descricao"));
             produto.setLocalizacaoProduto(rs.getString("localizacao_produto"));
             produto.setValidade(rs.getString("validade"));
             produto.setValorProduto(rs.getDouble("valorproduto"));
             produto.setQuantidadeEstoque(rs.getInt("quantidadeestoque"));
             
             Filiais filiais = new Filiais();
             filiais.setNomeFilial(rs.getString("nomeunidade"));
             produto.setFiliais(filiais);


                strList.add(produto);
            }


            pst.close();
            rs.close();



        } catch (Exception e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(null, e.getMessage());

        }
       return strList;
    }

aki eh minha view que chama do metodo do controle

try {
           Produto produto = new Produto();
           IFachada fachada = new Fachada();

           //   IFachada fachadaoco = (IFachada) new FachadaOcorrencia();
           //  JOptionPane.showMessageDialog(null,"antes do parametro");
           fachada.setDomainObject(produto);

           List<Produto> list = fachada.consultar(tfconsult1.getText(), tfconsult2.getText());



           // JOptionPane.showMessageDialog(null,"dps do parametro");

           for (Produto prod : list) {
               tfcodprod.setText(String.valueOf(prod.getId()));
               tfnomeprod.setText(String.valueOf(prod.getNomeProduto()));
               tfdescricao.setText(String.valueOf(prod.getDescricao()));
               tflocalizacao.setText(String.valueOf(prod.getLocalizacaoProduto()));
               tfdescricao.setText(prod.getDescricao());
               tfvalidade.setText(prod.getValidade());
               tfvalor.setText(Double.toString(prod.getValorProduto()));
               tfquantidade.setText(String.valueOf(prod.getQuantidadeEstoque()));
               tfmarca.setText(prod.getMarcaproduto().getNomeMarca());
               kkkklocal.setText(prod.getFiliais().getNomeFilial());

da pra usar esse metodo pra consultar no banco e gerar um relatorio?

UMC

rapaz vc nao precisa colocar o Select na classe em java quando vc controi um relartorio com o Ireport vc ja coloca nele.
vc precisa colocar aapenas o nome do banco caminho ,login e senha.
e para gerar o Relatrio so precisa chamar a classe.
vlw
abs

S

ok. no netbeans fui em welcome to ireport… fez meu relatorio e ele salvou com a extensão .jrprint
tentei varios exemplos que esta no guj mais não aconteceu nada… apareceu um joptionpane vazio. deve ser algo null…
com vc faz para abrir o relatorio?

Criado 5 de dezembro de 2009
Ultima resposta 7 de dez. de 2009
Respostas 12
Participantes 5