Ireport não aparece nada

7 respostas
dudu_sps

BOm Pessoal to tentando fazer aparecer o meu ireport aqui
e dei uma bela de uma pesquisada no forummm

e até consegui fazer pelo menos aparecer a janelinha do ireport que ja foi dificil
soh que não ta aparecendo nada

pq será??

desculpem abrir outro topico sobre isto, mas num axo algo especifico pra mim

package relatorios;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;   
import java.util.Map;   

import javax.swing.JOptionPane;
  
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 verRelatorios   
{   
	private static Connection conn;
    public static void conectar() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost/estoque", "root", "");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static JasperPrint gerarEmpresa(String teste)   
    {   
        JasperPrint rel = null;   
        try   
        {   
            Map map = new HashMap();   
            rel = JasperFillManager.fillReport(teste, map);   
               
        }   
        catch (JRException e) {   
            JOptionPane.showMessageDialog(null, "Erro");
            e.printStackTrace();   
        }   
           
        return rel;   
        }   
       
    public static void main(String args[])   
    {   
        new verRelatorios();   
        JasperViewer.viewReport(gerarEmpresa("src/Relatorio_movimentacao.jasper"));   
    }       
}

7 Respostas

rmendes08

Você tem que passar a conexão com o banco de dados para o FillManager.

dudu_sps

ahn… como?

dudu_sps

Se era pra fazer isso

rel = JasperFillManager.fillReport(teste, map, conn);

não apareceu nada ainda :\

rmendes08

Você tem que abrir a conexão antes … e sempre é bom conferir se a consulta do relatório retorna linhas.

ManoJava

Boa tarde!

Parece que seu HashMap esta vazio

tente declarar assim:

private HashMap<String, Object> parametros = new HashMap<String, Object>();

Att.

dudu_sps

Gente Beleza... resolvi o Meu problema!!

fiz o seguinte!
private static Connection conn;  //  @jve:decl-index=0:
    public static void conectar() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost/estoque", "root", "");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    
	@SuppressWarnings("unchecked")
	public static JasperPrint gerarEmpresa() {   
        JasperPrint rel = null;   
        try   
        {   
        	conectar();
	        Map map = new HashMap();  
	        String query = "SELECT "+
     "moviment_conta_pagar.`CODIGO` AS moviment_conta_pagar_CODIGO, "+
     "moviment_conta_pagar.`CHEQUE_DIV` AS moviment_conta_pagar_CHEQUE_DIV, "+
     "moviment_conta_pagar.`DATA_PAG` AS moviment_conta_pagar_DATA_PAG, "+
     "moviment_conta_pagar.`CANCELADO` AS moviment_conta_pagar_CANCELADO, "+
     "moviment_conta_pagar.`DATA_PREVISTA` AS moviment_conta_pagar_DATA_PREVISTA, "+
     "moviment_conta_pagar.`DEB_CRED` AS moviment_conta_pagar_DEB_CRED, "+
     "moviment_conta_pagar.`HISTORICO` AS moviment_conta_pagar_HISTORICO, "+
     "moviment_conta_pagar.`NUM_CHEQUE` AS moviment_conta_pagar_NUM_CHEQUE, "+
     "moviment_conta_pagar.`PAGO` AS moviment_conta_pagar_PAGO, "+
     "moviment_conta_pagar.`VALOR_PAGO` AS moviment_conta_pagar_VALOR_PAGO, "+
     "moviment_conta_pagar.`CONTA` AS moviment_conta_pagar_CONTA, "+
     "moviment_conta_pagar.`DUPLICATA` AS moviment_conta_pagar_DUPLICATA, "+
     "moviment_conta_pagar.`TIPOMOVI` AS moviment_conta_pagar_TIPOMOVI, "+
     "cad_conta.`CODIGO` AS cad_conta_CODIGO, "+
     "cad_tipo_mov.`CODIGO` AS cad_tipo_mov_CODIGO, "+
     "cad_tipo_mov.`DESCRICAO` AS cad_tipo_mov_DESCRICAO, "+
     "duplicatas_nota_pagar.`CODIGO` AS duplicatas_nota_pagar_CODIGO, "+
     "duplicatas_nota_pagar.`BOLETO` AS duplicatas_nota_pagar_BOLETO, "+
    " duplicatas_nota_pagar.`CANCELADO` AS duplicatas_nota_pagar_CANCELADO, "+
     "duplicatas_nota_pagar.`NUM_DOC` AS duplicatas_nota_pagar_NUM_DOC "+
"FROM "+
     "`cad_conta` cad_conta INNER JOIN `moviment_conta_pagar` moviment_conta_pagar ON cad_conta.`CODIGO` = moviment_conta_pagar.`CONTA` "+
     "INNER JOIN `cad_tipo_mov` cad_tipo_mov ON moviment_conta_pagar.`TIPOMOVI` = cad_tipo_mov.`CODIGO` "+
     "INNER JOIN `duplicatas_nota_pagar` duplicatas_nota_pagar ON moviment_conta_pagar.`DUPLICATA` = duplicatas_nota_pagar.`CODIGO`" +
     "WHERE " +conta()+" && "+pago()+" && moviment_conta_pagar.`CANCELADO` = 'S'"+
     " ORDER BY " +
	"moviment_conta_pagar.`DATA_PAG` ASC ";
	        map.put("SQ", query); 
	        rel = JasperFillManager.fillReport("src/relatorios/Relatorio_movimentacao.jasper", map, conn);
	            
        }   
        catch (JRException e) {   
            JOptionPane.showMessageDialog(null, "Erro: "+e);
            e.printStackTrace();   
        }   
           
        return rel;   
    }
	
	private static String conta(){
		String contaa;
		if(txt_conta.getText().equals("")){
			contaa = " 1 = 1 ";
		}else{
			contaa = " cad_conta.`CODIGO` = "+Integer.parseInt(txt_conta.getText());
		}
		return contaa;
	}
	
	private static String pago(){
		String pagoo;
		if(radio_todas.isSelected()){
			pagoo = "1 = 1";
		}else if(radio_pago.isSelected()){
			pagoo = "moviment_conta_pagar.`PAGO` = 'S' or moviment_conta_pagar.`PAGO` = 's'";
		}else {
			pagoo = "moviment_conta_pagar.`PAGO` = 'N' or moviment_conta_pagar.`PAGO` = 'n'";
		}
		return pagoo;
	}
e no botão
JasperViewer.viewReport(gerarEmpresa());

até ai blz

no meu Jtable eu fiz o seguinte.. conforme eu vou inserindo os registro no jtable
eu faço uma clausula

que se um determinado campo da minha tabela for NULL eu mando aparecer um texto

e no ireport como faço isso???

ele simplismente não aparece os resultados que o campo é null

segue a expressão que estou usando no Ireport

($F{moviment_conta_pagar_CHEQUE_DIV} == "cheque")?
$F{moviment_conta_pagar_NUM_CHEQUE}
:
($F{moviment_conta_pagar_DUPLICATA} == null)?
"entrada/Transf"
:
$F{duplicatas_nota_pagar_NUM_DOC}

ajudem ai

rmendes08

Assim cara, deixa mais claro o que você quer com essa condicional, porque tá confuso … deixa mais claro o que deveria ser retornado para uma entrada x … existe também a possibilidade de ao invés de retornar null a query retornar string vazia ou string em branco, que são coisas bem diferentes .

Criado 7 de dezembro de 2009
Ultima resposta 8 de dez. de 2009
Respostas 7
Participantes 3