Parametros no ireport [RESOLVIDO]

10 respostas
salmaox

bom dia a todos,

fiz um relatório que apenas recebe parâmetros e não faz consulta alguma no banco de dados. Porém qnd mando gerar ele retorna que o documento não contém páginas. Li em alguns lugares que devo fazer um consulta qualquer no banco pra ele gerar. Existe alguma outra forma de fazer sem utilizar o bando de dados?
segue meu método

private void btoNotaPromissoriaActionPerformed(java.awt.event.ActionEvent evt) {

try {

String valor = txtValor.getText();

String dia   = cbDia.getSelectedItem().toString();

String mes   = cbMes.getSelectedItem().toString();

String ano   = cbAno.getSelectedItem().toString();
Map<String, String> hm = new HashMap<String, String>();

        hm.put("valor", valor);
        hm.put("dia", dia);
        hm.put("mes", mes);
        hm.put("ano", ano);

        String query = "select idturma from turma";
        java.sql.ResultSet rs = conexao.executarConsulta(query);

        JRResultSetDataSource jrRS = new JRResultSetDataSource(null);
        InputStream relJasper = getClass().getResourceAsStream("NotaPromissoria.jasper");
        JasperPrint jasperPrint = JasperFillManager.fillReport(relJasper, hm, jrRS);
        JasperViewer jv = new JasperViewer(jasperPrint, false);
        jv.setTitle("Nota Promissória");
        jv.setVisible(true);
        
    } catch (JRException ex) {
        Logger.getLogger(GeraNotaPromissoria.class.getName()).log(Level.SEVERE, null, ex);
    }
}

muito obrigado

10 Respostas

TheKill

salmaox:
bom dia a todos,

fiz um relatório que apenas recebe parâmetros e não faz consulta alguma no banco de dados. Porém qnd mando gerar ele retorna que o documento não contém páginas. Li em alguns lugares que devo fazer um consulta qualquer no banco pra ele gerar. Existe alguma outra forma de fazer sem utilizar o bando de dados?
segue meu método

private void btoNotaPromissoriaActionPerformed(java.awt.event.ActionEvent evt) {

try {

String valor = txtValor.getText();

String dia   = cbDia.getSelectedItem().toString();

String mes   = cbMes.getSelectedItem().toString();

String ano   = cbAno.getSelectedItem().toString();
Map<String, String> hm = new HashMap<String, String>();

        hm.put("valor", valor);
        hm.put("dia", dia);
        hm.put("mes", mes);
        hm.put("ano", ano);

        String query = "select idturma from turma";
        java.sql.ResultSet rs = conexao.executarConsulta(query);

        JRResultSetDataSource jrRS = new JRResultSetDataSource(null);
        InputStream relJasper = getClass().getResourceAsStream("NotaPromissoria.jasper");
        JasperPrint jasperPrint = JasperFillManager.fillReport(relJasper, hm, jrRS);
        JasperViewer jv = new JasperViewer(jasperPrint, false);
        jv.setTitle("Nota Promissória");
        jv.setVisible(true);
        
    } catch (JRException ex) {
        Logger.getLogger(GeraNotaPromissoria.class.getName()).log(Level.SEVERE, null, ex);
    }
}

muito obrigado

Tente mandar o parametro de SQL como vazio.

String sql = ""; JRResultSetDataSource jrRS = new JRResultSetDataSource(sql); InputStream relJasper = getClass().getResourceAsStream("NotaPromissoria.jasper"); JasperPrint jasperPrint = JasperFillManager.fillReport(relJasper, hm, jrRS);

Att. Jonas

salmaox

não deu!!!
eu já havia tentado assim

TheKill

Eu já fiz isso, mas não lembro como que foi feito.

Por que não coloca o sql que vc tem ali no java?

envia por sql para o relatório, basta criar o field no ireport com o mesmo nome do atributo da tabela

thiagocg

Olá salmaox, isto que vc quer fazer é bem tranquilo, vc so precisa alterar um item na configuração do relatorio, ñ me lembro ao certo onde, não tenho o ireport instalado aqui no serviço, mas posso te passar assim que chegar em casa a noite, mas se quiser dar uma procurada, da uma olhada na parte de configurações do relatorio la terão algumas abas que vc pode configurar diversas coisas no seu relatorio, uma delas é exatamente esta, como vc deseja exibir o relatorio caso não exista itens “detail”.

Da uma olhada ai e se não conseguir me avisa q a noite te passo certinho!

[]'s

TheKill

Amigo estava lendo meus código aqui.

Faça o seguinte:

ArrayList<String> numPaginas = new ArrayList<String>();
numPaginas.add("");
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(numPaginas);
JasperPrint jasperPrint = JasperFillManager.fillReport(relJasper, hm, numPaginas);

Me avise se deu certo.

Att. Jonas

TheKill

TheKill:
Amigo estava lendo meus código aqui.

Faça o seguinte:

ArrayList<String> numPaginas = new ArrayList<String>();
numPaginas.add("");
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(numPaginas);
JasperPrint jasperPrint = JasperFillManager.fillReport(relJasper, hm, ds);

Me avise se deu certo.

Att. Jonas

salmaox

infelizmente não deu certo!!!
segue o erro

15/10/2009 09:50:38 telas.GeraNotaPromissoria btoNotaPromissoriaActionPerformed

SEVERE: null

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean :

at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:127)

at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:100)

at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:104)

at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:799)

at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:763)

at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1383)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:889)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:811)

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:582)
TheKill

Estranho amigo,

Verifique se nao sobrou vestigios de algum Field no seu relatório.

Esta mensagem está dizendo que está mandando o SEVERE como Null.

Ou algum atributo Null.

Não é problema do SQL

salmaox

TheKill era isso mesmo, criei apaguei e criei outro xml do meu relatatório e funcionou perfect!!!

muito obrigado a vc e a todos que me ajudaram

segue o método funcionando caso alguém precise

private void btoNotaPromissoriaActionPerformed(java.awt.event.ActionEvent evt) {

try {

String valor = txtValor.getText();

String dia = cbDia.getSelectedItem().toString();

String mes = cbMes.getSelectedItem().toString();

String ano = cbAno.getSelectedItem().toString();
Map<String, String> hm = new HashMap<String, String>();

        hm.put("dia", dia);
        hm.put("mes", mes);
        hm.put("ano", ano);
        hm.put("valor", valor);

        ArrayList<String> numPaginas = new ArrayList<String>();
        numPaginas.add("");
        JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(numPaginas);
        InputStream relJasper = getClass().getResourceAsStream("NotaPromissoria.jasper");
        JasperPrint jasperPrint = JasperFillManager.fillReport(relJasper, hm, ds);
        JasperViewer jv = new JasperViewer(jasperPrint, false);
        jv.setTitle("Nota Promissória");
        jv.setVisible(true);

    } catch (JRException ex) {
        Logger.getLogger(GeraNotaPromissoria.class.getName()).log(Level.SEVERE, null, ex);
    }
}
TheKill

Disponha, uma mão lava a outra.

Em busca de conhecimentos comunitários a tendência é
só crescer.

Ps.: Renomeie o nome do tópico para Resolvido: Parametros no Ireport

Criado 15 de outubro de 2009
Ultima resposta 15 de out. de 2009
Respostas 10
Participantes 3