Bom dia pessoal,
Tô sofrendo para montar meu relatório com IReport…
Peguei o tutorial do Carlos Fernandes “COMO MONTAR UM RELATÓRIO…”
O relatório principal roda legal, o problema é na hora de montar o sub-relatório.
Criei os campos do tipo field no sub-relatório, criei o parametro com o mesmo nome da arraylist
os fields tem os mesmos nomes de meus campos na tabela tabitens
e na minha classe java fiz o seguinte:
import net.sf.jasperreports.view.JasperViewer;
import java.sql.*;
import java.util.HashMap;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import control.Banco;
public class RelatorioTeste { /* Realza contornaniexão com o banco de dados, redo o objeto Connection */
ArrayList it = new ArrayList();
private static Connection getConnection( ) throws
ClassNotFoundException, SQLException
{
String driver = "org.postgresql.Driver";
String url = "jdbc:postgresql://localhost/Banco";
String usuario = "postgres";
String senha = "post";
Class.forName(driver);
Connection con = DriverManager.getConnection( url, usuario, senha );
return con;
}
/* Gera Relatorio e visualiza-o */
public void geraRelatorio( ) throws JRException, Exception {
Connection con = getConnection( );
Statement stm = con.createStatement( );
String query = "select * from taborcamento";
ResultSet rs = stm.executeQuery( query );
Hashtable ht = new Hashtable();
while(rs.next())
{
ht.put("CLIENTE",rs.getString(2));
ht.put("VENDEDOR",rs.getString(5));
}
try
{
/* implementação da interface JRDataSource para DataSource ResultSet */
//JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
JREmptyDataSource jrEP = new JREmptyDataSource ();
itens();
JRBeanCollectionDataSource i = new JRBeanCollectionDataSource (it);
ht.put("it",i);
/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
JasperPrint jasperPrint = JasperFillManager.fillReport("RelatorioTeste.jasper", ht, jrEP );
JasperViewer jrviewer = new JasperViewer(jasperPrint, false);
jrviewer.setVisible(true);
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,"Erro ao gerar relatório"+e.getMessage());
}
}
public ArrayList itens ()
{
Connection con = null;
try
{
con = Banco.conectar();
PreparedStatement ps;
ps = con.prepareStatement("select * from tabitens");
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 0; i<rsmd.getColumnCount();++i)
{
while (rs.next())
{
// tras o campo "quantidade"
it.add(rs.getInt(2));
}
con.close();
ps.close();
rs.close();
}
catch (Exception e)
{
System.out.println(e);
}
return it;
}
public static void main(String[] args) throws JRException, Exception
{
new RelatorioTeste().geraRelatorio();
}
}
Na exceção ele diz o seguinte:
net.sf.jasperreport.engine.JRException:Error retrieving field value bean: quantidade;
…
Caused by:
java.lang.NoSuchMethodException:Unknown property ‘quantidade’.
Por favor, será que alguém pode me socorrer!