TheKill 15 de out. de 2009
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 15 de out. de 2009
não deu!!!
eu já havia tentado assim
TheKill 15 de out. de 2009
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 15 de out. de 2009
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 15 de out. de 2009
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 15 de out. de 2009
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 15 de out. de 2009
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 val ue from bean :
at net . sf . jasperreports . engine . data . JRAbstractBeanDataSource . get BeanProperty ( JRAbstractBeanDataSource . java : 127 )
at net . sf . jasperreports . engine . data . JRAbstractBeanDataSource . get FieldValue ( JRAbstractBeanDataSource . java : 100 )
at net . sf . jasperreports . engine . data . JRBeanCollectionDataSource . get FieldValue ( 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 15 de out. de 2009
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 15 de out. de 2009
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 15 de out. de 2009
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