iReport + netbeans

8 respostas
iquefarias

Fala pessoal, blz??

Bem estou com a seguinte duvida sobre o iReport, bem não consigo passar parametros do java pro iReport simplesmente não funciona e não acho outra solucao sera que alguem pode me ajudar???

package br.com.karinhaEstoque.relatorios;  
   
 import java.sql.Connection;  
 import java.sql.DriverManager;  
 import java.sql.ResultSet;  
 import java.sql.Statement;  
 import java.util.HashMap;  
   
   
 import javax.swing.JOptionPane;  
 import net.sf.jasperreports.engine.JRResultSetDataSource;  
 import net.sf.jasperreports.engine.JasperFillManager;  
 import net.sf.jasperreports.engine.JasperPrint;  
 import net.sf.jasperreports.view.JasperViewer;  
   
   
 public class formRelatorioCliente extends javax.swing.JFrame {  
   
     private Connection     con = null;  
     private String         driver = "com.mysql.jdbc.Driver";  
     private String         endereco = "jdbc:mysql://localhost/karinhaestoque";  
     private String         user = "root";  
     private String         pass = "123";  
     private ResultSet      rs = null;  
     private String         valores[] = new String[10];  
     private String         dir = "C:/Documents and Settings/Afonso/Desktop/My Documents/Backup/Karen Estoque/src/br/com/karinhaEstoque/relatorios/relatorio.jasper";  
     // private StringReader   stream;  
     private Statement      statement;  
       
       
       
       
     public formRelatorioCliente()   
     {  
         initComponents();  
     }  
   
       
 private void btnGerarActionPerformed(java.awt.event.ActionEvent evt) {  
 conexaoBanco();  
 geraRelatorio();  
 }  
   
 /* Primeira parte */  
 public void conexaoBanco()  
 {  
   
     try   
     {  
        if (con == null)   
        {  
   
         Class.forName(driver);  
         con = DriverManager.getConnection(endereco, user, pass);  
         statement = con.createStatement();  
         rs = statement.executeQuery("select * from cliente where codigo = $P{codigo}");  
          while (rs.next())  
          {  
            for (int i = 1; i <= 1; i++)   
            {  
                valores[i] = rs.getString(i);  
            }  
           }  
         }  
     }  
     catch (Exception e)   
     {  
         System.err.println("Problemas apresentados na operacao de conexao");  
         e.printStackTrace();  
     }       
 }      
     
   
 private void geraRelatorio()  
 {  
       
       /* Inicio do bloco que ira gerar nossos relatorios e 3ª parte */  
         try {  
   
             String array[] = valores;  
               
             JasperPrint rel = null;  
   
             HashMap parameters = new HashMap();  
               
             parameters.put("codigo", array[1]);  
   
             /*parameters.put("PARAMETRO_2", array[2]); 
              
             parameters.put("PARAMETRO_3", array[5]); 
              
             parameters.put("PARAMETRO_4", array[4]); 
              
             parameters.put("PARAMETRO_5", array[9]);*/  
               
             JRResultSetDataSource jrRS1 = new JRResultSetDataSource(rs);  
             JasperPrint print;  
             print = JasperFillManager.fillReport(dir,parameters,jrRS1);  
             JasperViewer jrviewer = new JasperViewer(print,false);  
             jrviewer.setVisible(true);  
             rs.close();  
             statement.close();  
               
   
             /*rel = JasperFillManager.fillReport(dir, parameters, con); 
  
             JasperViewer jrviewer = new JasperViewer(rel, false);*/  
   
             jrviewer.setVisible(true);  
   
         }  
         catch (Exception e)   
         {  
             e.printStackTrace();  
         }  
 }  
     /* Aqui chamamos o construtor de nossa classe para exibirmos o relatorio e 4ª parte*/  
   
       
   
       
       
     public static void main(String args[]) {  
         java.awt.EventQueue.invokeLater(new Runnable() {  
             public void run() {  
                 formRelatorioCliente form = new formRelatorioCliente();  
                 form.setLocationRelativeTo(null);  
                 form.setVisible(true);  
             }  
         });  
     }  
   
     // Variables declaration - do not modify  
     private javax.swing.JButton btnGerar;  
     private javax.swing.JLabel jLabel1;  
     private javax.swing.JTextField txtCodigo;  
     // End of variables declaration  
   
 }

Desde já agradeco a ajuda da galera, valeu…

8 Respostas

D

[color=green]Olá.

Caso você crie um parâmetro assim:[/color]

parameters.put("teste","teste");

[color=green]Você deve criar um parâmetro no iReport: View > Parameters com o mesmo nome e sendo do tipo String, por exemplo.

Espero que isso possa lhe ajudar, até.[/color]

iquefarias

Pois é cara, já tentei isso mas não funcionou acho que é problema no .jasper, pois não estou sabendo mecher muito bem no jasper não sei se tenho que colocar uma query tambem dentro do jasper…

rollei

a query do relatorio voce faz toda no ireport, ela fica num xml que eh compilado pelo ireport e no final das contas fica dentro do .jasper (xml compilado)

lah no seu relatorio voce tem que criar os parametros e passar esses parametros na sua aplicacao java

por exemplo

“select * from table where $P{NOMEDOPARAMETRO} = algumaCOisa”

quando voce passa seu parametro na aplicao ele eh substituido no jasper

iquefarias

Entendi, então vou ter que ter uma query só, que seria a query dentro do .jasper certo???
e outra coisa do jeito que eu to fazendo não tem jeito de colocar a query do relatorio dentro do java naum???vaelu…

rollei

cara voce pode fazer mais de uma query no seu relatorio, para isso voce tem os subrelatorios.

eu nunca tentei fazer a query no java … ate porque tira um pouco do proposito do ireport, uma das vantagens de usar o ireport eh exatamente extrair o sql do teu codigo, mas deve ser possivel … eu nunca tentei

rollei

cara eu nao tenho certeza se deve funcionar, pq nunca testei

mas voce podia tentar colocar no select do seu relatorio uma querry assim:

“$P{NOMEDOPARAMETRO}”

e no seu codigo java passar todo o sql como parametro

iquefarias

blz vou estudar um jeito de fazer query dentro do java, mas vou testar o que voce me falou pra ver se funciona aki, valeu…

jadsonsol

Boa noite,

Pessoal como faço para passar os parametros do netbeans para o ireport em tempo de execução?

Alguém já utilizou o plugin JasperReportViewer http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=2553 eu acho que ele resolveria o problema de passagem de parametros mas eu não estou conseguindo configura-lo, alguém poderia ajudar?

Obs. Estou começando agora em Java/Netbeans e estou quebrando a cabeça com este problema.

Obrigado.

Criado 7 de agosto de 2008
Ultima resposta 28 de jun. de 2009
Respostas 8
Participantes 4