Boa tarde,
Eu estou com um problema na aplicação que estou desenvolvendo como projeto acadêmico onde eu tenho um processo de compra que é executado com sucesso porém não consigo fazer com que o relatório seja chamado apresentando os itens que foram comprados.
Segue a minha classe dao
package dao;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import modelo.Compra;
import modelo.Produto;
import modelo.Venda;
public class DAOCompraPSQL implements DAOCompra {
DAOFactoryPSQL dao = DAOFactoryPSQL.getInstance();
Connection con;
public DAOCompraPSQL()
{
con = dao.getConnection();
}
public void cadastrar(Compra cp,Produto pd) {
try{
PreparedStatement ps = con.prepareStatement ("insert into compra (data,produto,qtd_produto,valor_produto,fornecedor,total,id) values (?,?,?,?,?,?,?)");
ps.setDate(1, cp.getData1());
ps.setString(2,pd.getModelo());
ps.setInt(3,cp.getQdt_produto());
ps.setDouble(4,pd.getValor());
ps.setString(5,cp.getNome_forne());
ps.setDouble(6, cp.getTotal());
ps.setInt(7, cp.getNumero_compra());
ps.executeUpdate() ;
}catch ( Exception e )
{
System.out.println(e.getMessage());
}
}
public Vector consultarCompra(Compra c) {
try
{
PreparedStatement ps = con.prepareStatement("Select * from compra where id=? ");
ps.setInt(1, c.getNumero_compra());
ResultSet r = ps.executeQuery();
Vector v = new Vector ();
while( r.next())
{
Compra c1 = new Compra();
c1.setData1(r.getDate("data"));
c1.setDesc_produto(r.getString("produto"));
c1.setQdt_produto(r.getInt("qtd_produto"));
c1.setPreco_produto(r.getDouble("valor_produto"));
c1.setNome_forne(r.getString("fornecedor"));
c1.setTotal(r.getDouble("total"));
c1.setNumero_compra(r.getInt("id"));
v.add(c1);
}
return v;
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
return null;
}
public int obterCodigo()
{ int codigo = 0;
try
{
PreparedStatement ps = con.prepareStatement ("select max(id)from compra");
ResultSet r = ps.executeQuery();
if(r.next())
{
codigo = r.getInt(1);
}
}catch (SQLException e1)
{
e1.getMessage();
}
return codigo;
}
public Compra consultarCompras(Compra c)
{
try
{
PreparedStatement ps = con.prepareStatement("select * from compra where id=? ");
ps.setInt(1, c.getNumero_compra());
ResultSet rs = ps.executeQuery();
if(rs.next())
{
c.setNumero_compra((rs.getInt("numero_compra")));
c.setNome_forne((rs.getString("nome_forne")));
c.setDesc_produto(rs.getString("desc_produto"));
c.setPreco_produto((rs.getDouble("preco_produto")));
c.setQdt_produto(rs.getInt("qtd_produto"));
c.setDataInicio((rs.getDate("dataInicio")));
c.setTotal(rs.getDouble("total"));
return c;
}
}
catch(SQLException e)
{
System.out.println(e.getMessage());
}
return null;
}
@Override
public Vector consultarCompras(int num) {
try
{
PreparedStatement ps = con.prepareStatement("select * from compra where id=? ");
ps.setInt(1, num);
ResultSet rs = ps.executeQuery();
Vector v = new Vector ();
while( rs.next())
{
Compra c = new Compra();
c.setNumero_compra((rs.getInt("numero_compra")));
c.setNome_forne((rs.getString("nome_forne")));
c.setDesc_produto(rs.getString("desc_produto"));
c.setPreco_produto((rs.getDouble("preco_produto")));
c.setQdt_produto(rs.getInt("qtd_produto"));
c.setDataInicio((rs.getDate("dataInicio")));
c.setTotal(rs.getDouble("total"));
v.add(v);
}
return v;
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
return null;
}
}
Esse é o trecho da minha classe de controle onde após a efetivação do processo de compra, deveria ser chamado o relatório informando os itens comprados.
if ( e.getActionCommand().equals("Realizar Compra"))
{
try
{
int i = dcp.obterCodigo();
i++;
cp.setNumero_compra(i);
}
catch(NumberFormatException e1)
{
e1.getMessage();
}
int valorquant;
for(int i=0 ; i<dtm.getRowCount();i++)
{
boolean realizacompra = false;
Produto p5 = new Produto();
pdt.setModelo((String) dtm.getValueAt(i ,0));
pdt.setValor(Double.parseDouble((String) dtm.getValueAt(i ,1)));
cp.setQdt_produto(Integer.parseInt((String) dtm.getValueAt(i ,2)));
cp.setNome_forne((String) dtm.getValueAt(i ,3));
java.sql.Date dataSql = new java.sql.Date(new Date().getTime());
cp.setData1(dataSql);
p5 = dpdt.consultar_prod_tela(pdt);
int quant = p5.getQuantidade();
int quant2=cp.getQdt_produto();
valorquant= quant+quant2;
pdt.setQuantidade(valorquant);
pdt.setModelo((String) dtm.getValueAt(i ,0));
pdt.setId(p5.getId());
dpdt.alterar_qtd_prod(pdt);
dcp.cadastrar(cp,pdt);
JOptionPane.showMessageDialog(null,"Estoque atualizado com sucesso !!!",null,JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Compra realizada com sucesso !!!",null,JOptionPane.INFORMATION_MESSAGE);
}
Vector v1 = new Vector();
v1 = dcp.consultarCompras(cp.getNumero_compra());
if(v1.size()>0)
{
try
{
JRBeanCollectionDataSource jr = new JRBeanCollectionDataSource(v1);
String s = JasperFillManager.fillReportToFile("NotadeCompra.jasper",new HashMap(),jr);
JasperViewer.viewReport(s,false,false);
}
catch(Exception t)
{
System.out.println(""+t);
}
}
else
{
JOptionPane.showMessageDialog(null,"O relatório não contém páginas.", "Atenção ",JOptionPane.ERROR_MESSAGE);
}
}
Se alguem puder me ajudar eu agradeço pois não estou conseguindo identificar o que pode estar acontecendo.
Um abraço e boa tarde a todos.