06/03/2007, 07:39
|
| | Fecha de Ingreso: septiembre-2006
Mensajes: 10
Antigüedad: 18 años, 4 meses Puntos: 0 | |
Re: Problema con Ireport Bueno como les comente aquí esta la solución.
Pero primero que nada le agradezco a un amigo, Marcelo, que también es usuario de este foro, ya que gracias a el obtuve la solución, de muchas formas trate de encontrar una solución a mi problema y no obtuve ningún resultado, pero como lo comente me ayudaron, si bien estuve cerca de encontrar la solución, mi amigo me ayudo demasiado, bueno ahora a lo prometido.
En si el siguiente código corresponde a un servlet qeu se encargara de la labor de procesar el reporte:
public class LlamaReporte extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.handleSubmit(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.handleSubmit(request, response);
}
protected void handleSubmit(HttpServletRequest request, HttpServletResponse response) throws IOException {
PrintWriter out = null;
// Obtener el nombre del reporte atravez de un request por ejemplo
// reporte.jasper
String reReporte = request.getParameter("reporte");
System.out.println("************************ el reporte es "+reReporte);
try {
Connection con = DbPoolManager.getConnection("mysql");
//ruta en donde se encuentra el reporte
String rptfilename = "/Reportes/"+reReporte;
HashMap params = new HashMap();
// consulta sq
String sql="SELECT * from ventas where id = '10' ";
params.put("sql_query", new String(sql));
JasperPrint jasperprint = JasperFillManager.fillReport(getServletContext().g etRealPath("/") + rptfilename, params, con);
// export report to pdf and stream back to browser
byte[] pdfasbytes = JasperExportManager.exportReportToPdf(jasperprint) ;
ServletOutputStream outstream = response.getOutputStream();
response.setContentType("application/pdf");
response.setContentLength(pdfasbytes.length);
response.setHeader("Content-disposition", "inline; filename=\"Reporte.pdf\"");
outstream.write(pdfasbytes);
} catch (Exception ne) {
out = response.getWriter();
out.println("<html>");
out.println("\t<body>");
out.println("\t\t<br /><br />");
out.println("\t\tA ocurrido un error no es posible "
+ "despelgar el reporte "
+ "en este momento.");
out.println("\t\t<br /><br />");
out.println("\t\tMensaje de error ==> " + ne.getLocalizedMessage());
out.println("\t\t<br />");
out.println("\t\tCausa del error ==> " + ne.getCause());
out.println("\t</body>");
out.println("</html>");
} finally {
try {
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/*
Para obtener el archivo reporte.jasper: En el momento de compilar atravez de irepor nuestro reporte se genera el archivo nombredelreporte.jasper, es este archivo el que se debe dejar en una ruta conocida, como por ejemplo
nombredelproyecto\web\reportes\reporte.jasper es por esto la razon de la linea de codigo
String reReporte = request.getParameter("reporte");
y posterior
String rptfilename = "/Reportes/"+reReporte;
*/ |