Ola galera…
Tenho um ArrayList e gostaria de mostrar o mesmo em um relatorio Jasper, qual a melhor forma de fazer?
Creio que tenho que passar meu Array para um DataSource, mas não sei como fazer-lo.
Desde já agradeço a atenção a todos.
Ola galera…
Tenho um ArrayList e gostaria de mostrar o mesmo em um relatorio Jasper, qual a melhor forma de fazer?
Creio que tenho que passar meu Array para um DataSource, mas não sei como fazer-lo.
Desde já agradeço a atenção a todos.
JRDataSource jrDSCadastro = new JRBeanCollectionDataSource(colecaoProcessoBean);
Critiano fiz como Informado.
Deu o Seguinte Erro na Conversão:
symbol : constructor JRResultSetDataSource(java.util.List<relatorios.comercial.Ficha>)
location: class net.sf.jasperreports.engine.JRResultSetDataSource
JRResultSetDataSource jrRS = new JRResultSetDataSource( lista );
Note: E:\ProjetosJava\Netbeans\BudnyWeb\src\relatorios\comercial\FichaTecnicaMultNivel.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
segue minha classe:
[code]/*
package relatorios.comercial;
import conexao.Conexao;
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.servlet.;
import javax.servlet.http.;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperRunManager;
/**
*
@author user
@version
*/
public class FichaTecnicaMultNivel extends HttpServlet {
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
@param request servlet request
@param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=UTF-8”);
PrintWriter out = response.getWriter();
List<Ficha> lista = new ArrayList<Ficha>();
List<Boolean> fichaAberta = new ArrayList<Boolean>();
Connection conn = Conexao.getInstance().getConnection();
String relatorioJASPER = null;
relatorioJASPER = "/WEB-INF/classes/relatorios/comercial/FichaTecnicaMultNivel.jasper";
ServletOutputStream servletOutputStream = response.getOutputStream();
InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream(relatorioJASPER);
StringBuffer sql = new StringBuffer();
try {
HashMap parameters = new HashMap();
parameters.put("empresa", "Nome da Empresa");
parameters.put("cnpj", "CNPJ Insc. Est.: ");
parameters.put("usuario", "Usuario: " + request.getParameter( "usuario" ) );
sql.append("select codpro, descripro, abrevuni, qtdadefct ");
sql.append("from fichatec ");
sql.append("left join produto on empresapro=empfct and codpro=componfct ");
sql.append("left join unidade on empuni=empfct and coduni=unidpro ");
sql.append("where empfct='001' ");
sql.append("and codprofct='200010' ");
sql.append("order by descripro;");
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery( sql.toString() );
Integer i = 1;
while ( result.next() ) {
Ficha ficha = new Ficha();
ficha.setMascara( i.toString() );
i++;
ficha.setCodpro( result.getString( 1 ) );
ficha.setDescripro( result.getString( 2 ) );
ficha.setUnidade( result.getString( 3 ) );
ficha.setQtdade( result.getDouble( 4 ) );
lista.add(ficha);
fichaAberta.add(false);
}
int j = fichaAberta.indexOf(false);
while ( j != -1){
Ficha resultado = (Ficha) lista.get(j);
fichaAberta.set(j, true);
sql = new StringBuffer();
sql.append("select codpro, descripro, abrevuni, ");
sql.append(resultado.getQtdade()+"*qtdadefct as qtdadefct ");
sql.append("from fichatec ");
sql.append("left join produto on empresapro=empfct and codpro=componfct ");
sql.append("left join unidade on empuni=empfct and coduni=unidpro ");
sql.append("where empfct='001' ");
sql.append("and codprofct='" + resultado.getCodpro() + "' ");
sql.append("order by descripro;");
statement = conn.createStatement();
System.out.println(sql.toString());
result = statement.executeQuery( sql.toString() );
i = 1;
while ( result.next() ) {
Ficha ficha = new Ficha();
ficha.setMascara( resultado.getMascara() + "." + i.toString() );
i++;
ficha.setCodpro( result.getString( 1 ) );
ficha.setDescripro( result.getString( 2 ) );
ficha.setUnidade( result.getString( 3 ) );
ficha.setQtdade( result.getDouble( 4 ) );
lista.add(ficha);
fichaAberta.add(false);
}
j = fichaAberta.indexOf(false);
}
if ( lista.size() > 0 ) {
JRDataSource jrDSCadastro = new JRBeanCollectionDataSource(lista);
//JRResultSetDataSource jrRS = new JRResultSetDataSource( lista );
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameters, jrRS);
response.setContentType("application/pdf");
servletOutputStream.flush();
servletOutputStream.close();
} else {
response.setContentType("text/plain");
response.getOutputStream().print( "Não há dados para exibir esse Boletim." + sql.toString() );
return;
}
statement.close();
result.close();
} catch (Exception e) {
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain");
response.getOutputStream().print( stringWriter.toString() + " SQL: " + sql.toString() );
}
out.close();
}
// <editor-fold defaultstate=“collapsed” desc=“HttpServlet methods. Click on the + sign on the left to edit the code.”>
/** Handles the HTTP <code>GET</code> method.
/** Handles the HTTP <code>POST</code> method.
/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return “Short description”;
}
// </editor-fold>
}
class Ficha {
private String mascara;
private String codpro;
private String descripro;
private String unidade;
private double qtdade;
public Ficha(){}
public Ficha(String mascara, String codpro, String descripro, double qtdade){
this.mascara = mascara;
this.codpro = codpro;
this.descripro = descripro;
this.qtdade = qtdade;
}
public String getMascara() {
return mascara;
}
public void setMascara(String mascara) {
this.mascara = mascara;
}
public String getCodpro() {
return codpro;
}
public void setCodpro(String codpro) {
this.codpro = codpro;
}
public String getDescripro() {
return descripro;
}
public void setDescripro(String descripro) {
this.descripro = descripro;
}
public double getQtdade() {
return qtdade;
}
public void setQtdade(double qtdade) {
this.qtdade = qtdade;
}
public void setUnidade(String unidade) {
this.unidade = unidade;
}
}
[/code]
Problema resolvido.
Fiz da seguinte forma:
JRBeanCollectionDataSource jr = new JRBeanCollectionDataSource(lista);
Problema resolvido.
Fiz da seguinte forma:
JRBeanCollectionDataSource jr = new JRBeanCollectionDataSource(lista);