Documento nao tem pagina!Ireport

3 respostas
leandrovrb

Pessoal, fiz um relatorio Mestre com 2 subRelatorios
e nao sei como passar o valor do parametro em minha IDE, no IReport funciona legal agora no IDE diz que o
Documento nao tem pagina!!!,porque no IReport eu passo um numero para ele ex: que é comum em todos eles : Codigo da venda:10 e tem registro em meu BD.

Codigo Fonte da classe aeee::::

package relatorios;

import com.mysql.jdbc.ResultSet;
import javax.swing.JOptionPane;  
import java.util.*;  
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.view.JRViewer;
import net.sf.jasperreports.view.JasperViewer;
import utilitario.conexao;


public class RelVendaNota {
    conexao con = new conexao();
  public ResultSet rs; // Armazenar os comandos SQL.
    public RelVendaNota(){
    
        try{
         con.conecta();
         con.executeSQL("select cvenda.codVenda,clientes.nome,cvenda.dataVenda,cvenda.valorTotal as ValorVenda from cvenda,clientes where clientes.codcli");
        
       String pathArquivo =  "C:\SYSTEMDL\Relatorio\CVenda.jasper";   
          HashMap parameters = new HashMap();   
               parameters.put("RelDVenda","C:/SYSTEMDL/Relatorio/DVenda.jasper");   
               parameters.put("RelDServico","C:/SYSTEMDL/Relatorio/DServico.jasper");  
         
         
         
       JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);   
        JasperReport jasperReport = JasperManager.loadReport(pathArquivo);   
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, jrRS);   
        JasperManager.printReportToPdfFile(jasperPrint, "C:/SYSTEMDL/Relatorio/CVenda.pdf");   
        JRViewer view = new JRViewer(jasperPrint);   
        view.setVisible(true);  

      
       }
  
  catch(Exception error)
  {
       JOptionPane.showMessageDialog(null,"deu erro="+error);      //showMessageDialog(null,"deu erro = "+erro);
  }

 }
 public static void main(String args[])
 {
    new RelVendaNota();
 }
 
}

3 Respostas

javer

Amigo você deve passar tudo em relação ao seu .jar do sistema (supondo que você tenha um .jar com todo o sistema e sem não tem é melhor ir pensando em como criar um, o que é o padrão adotado) e não com esses locais fixos, vou tentar explicar um exemplo:

  • Você deve montar a Query no iReport e passar o código venda através de um Map<String, Object> como um parâmetro do tipo Integer, e os parâmetros dos seus subrelatórios como java.io.InputStream.

  • Sua query ficaria assim:

SELECT cvenda.codVenda, clientes.nome, cvenda.dataVenda, cvenda.valorTotal as ValorVenda FROM cvenda,clientes WHERE cvenda.codVenda = $P{CODIGO_VENDA}

Exemplo de passagem de parâmetros:

InputStream subReport1 = this.class.getResourceAsStream("Relatorio/DVenda.jasper");
InputStream subReport2 = this.class.getResourceAsStream("Relatorio/DServico.jasper");

Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("CODIGO_VENDA", 10);
parametros.put("RelDVenda", subReport1);     
parametros.put("RelDServico", subReport2);
leandrovrb

Adaptei oq vc disse no codigo,foi oq entendi e consigo fazer agora o this nao deu certo aq nao
Entao montei apenas um relatorio mas com passagem de parametros,
e continua aparecendo q nao tem pagina,Oq esta errado aeee?talves neste seja mais facil de entender como funciona.Vlw
ahh no Ireport eu passo um parametro pra ele e funciona perfeito so no IDE que nao consigo,ou seja no eclipse ou netbeans.
Vlw

try{
         con.conecta();
        HashMap parametros = new HashMap();
    
     String pathArquivo ="C:/SYSTEMDL/Relatorio/VendaTeste.jasper";   
    Integer codvenda = Integer.parseInt(tfCod.getText());

      parametros.put("codvenda",codvenda);
    JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);   
        JasperReport jasperReport = JasperManager.loadReport(pathArquivo);   
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parametros, jrRS);   
        JasperManager.printReportToPdfFile(jasperPrint, "C:/SYSTEMDL/Relatorio/CVenda.pdf");   
        JRViewer view = new JRViewer(jasperPrint);   
        view.setVisible(true);  
 }
  
  catch(Exception error)
  {
       JOptionPane.showMessageDialog(null,"deu erro="+error);      //showMessageDialog(null,"deu erro = "+erro);
  }
}
leandrovrb
na chamada dos subRelatorios que esta errado? qdo eu Executo a classe abaixo diz que nao localizou o Objeto Dvenda.Jasper,mas o caminho onde esta salvo esta certo:Para entenderem o relatorio Master é o cvenda e os dois sub sao dvenda e dservico:como chama-los na class Abaixo o codigo que fiz:
int codvenda=8;
  public RelTesteCVenda(){
    
        try{
     
         Connection con= new conexao2().getConnection(); 
         HashMap parametro = new HashMap();   
         parametro.put("codvenda",codvenda);   
       
        
         
         JasperPrint jp1 = JasperFillManager.fillReport("C:/SYSTEMDL/Relatorio/CVenda.jasper",parametro,con);   
         JasperViewer jrv1 = new JasperViewer(jp1);   
         jrv1.setVisible(true);   
     
         JasperPrint jp2 = JasperFillManager.fillReport("C:/SYSTEMDL/Relatorio/DVenda.jasper",parametro,con);   
         JasperViewer jrv2 = new JasperViewer(jp2);   
         jrv2.setVisible(true);   
         
        JasperPrint jp3 = JasperFillManager.fillReport("C:/SYSTEMDL/Relatorio/DServico.jasper",parametro,con);   
        JasperViewer jrv3 = new JasperViewer(jp3);   
         jrv3.setVisible(true);
Criado 16 de janeiro de 2009
Ultima resposta 22 de jan. de 2009
Respostas 3
Participantes 2