Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/11/2008, 13:21
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 17 años
Puntos: 260
Mensaje Respuesta: llenar reporte con funcion????

Cita:
Iniciado por yomedi Ver Mensaje
... entra directamente al exception como si no encontrara el reporte pero el path que me devuelve es el correcto ...
Si te genera una Exception, por qué no miras .getMessage() o .toString(), o imprimes el Stack Trace de dicha exception, normalmente cuando diseñas una aplicación, lo último que vas a realizar, inclusive después de la etapa de depuración va a ser poner las estructuras try {} cath {}. A tí no te es útil que el sistema te despliegue un mensaje que diga: 'No fue posible mostrar el reporte'.

Cita:
Iniciado por yomedi Ver Mensaje
Código:
            // Ubicacion del reporte
            String datos = System.getProperty("user.dir") +
                            "/repDC_Ticket.jasper";
            System.out.println("rutareporte:" + datos);
            if (datos == null) 
            {                
                System.out.println("No encuentro el archivo del reporte maestro.");
                System.exit(2);
            }
Voy a suponer que "rutareporte:" + datos, te imprime correctamente "rutareporte: /home/path/userdir/repDC_Ticket.jasper", y que el reporte existe, está compilado con la misma versión de iReport que la librería JasperReports que estas usando, que no tiene errores, etc.

Cita:
Iniciado por yomedi Ver Mensaje
Código:
            JasperReport reporteMaestro = null;
            try 
            {
                reporteMaestro = (JasperReport) JRLoader.loadObject(datos);
                
            } 
            catch (JRException e)             {
                 JOptionPane.showMessageDialog(null, "No se pudo cargar el reporte", "Error al ejecutar reporte", 
                 JOptionPane.ERROR_MESSAGE); 
            }
Llegando hasta aquí el código, JRLoader intenta cargar el reporte, si te aparece el mensaje el messagebox "Error al ejecutar reporte", definitivamente no pudo cargar el reporte, las librerías de Jasper no son las versiones correctas, el reporte no existe, el reporte no está bien diseñado (como el caso que hayas modificado el XML a mano), etc.

Cita:
Iniciado por yomedi Ver Mensaje
Código:
            //Reporte diseñado y compilado con iReport
            JasperPrint jasperPrint = JasperFillManager.fillReport(reporteMaestro,parametros);            
            //Se lanza el Viewer de Jasper
            JasperViewer jviewer = new JasperViewer(jasperPrint,false);         
            jviewer.setVisible(true);
         }   catch (Exception j)
         {
            JOptionPane.showMessageDialog(null, "No se pudo cargar el reporte", "Error al ejecutar reporte", 
            JOptionPane.ERROR_MESSAGE);  
         }
        
    }
Llegado hasta aquí el código debería de presentarte un visor del reporte, posiblemente genere un Warning de 'no hay conexión', pero aún así debería de verse el reporte, posiblemente vacío.

Los parámetros que le estas pasando al reporte, no son datos, son parámetros, si diseñaste el reporte directamente de una base de datos y le pasas los parámetros por Map(), no van a reemplazar el espacio que reservaste para los campos de la base de datos, y por consiguiente el reporte va a salir vacío.

Cita:
Iniciado por yomedi Ver Mensaje
entra directamente al exception como si no encontrara el reporte pero el path que me devuelve es el correcto. no tengo idea qeu podra ser...
¿Cual de todos los exception, cual es el mensaje?
Adivinar no es mi fuerte.

Yo cargo la información de Jasper de esta forma, lo modifiqué para no usar la conexión y usar reportes compilados, me presenta un Warning, donde no pudo encontrar la base de datos, pero aún así veo el reporte vacío.

Código:
    public JasperPrint Reporte04() throws DataConnectionException, SQLException, JRException {
        // JasperReport jasperReport = JasperCompileManager.compileReport(Main.getProperty("reportes_filepath") + "/jaspReport04.jrxml");
        // JasperPrint jasperPrinter = JasperFillManager.fillReport(jasperReport, new HashMap(), new DataConnection().getConnection());
        JasperReport jasperReport = (JasperReport) JRLoader.loadObject(Main.getProperty("reportes_filepath") + "/jaspReport04.jasper");
        JasperPrint jasperPrinter = JasperFillManager.fillReport(jasperReport, new HashMap());
        return jasperPrinter;
    }
....
    private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (Main.usuario.hasAccess(13)) {
            try {
                Reportes reportes = new Reportes();
                JasperViewer.viewReport(reportes.Reporte04(), false);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(this,
                        "Ha ocurrido un error al intentar imprimir el documento.\n" +
                        ex, getTitle(), JOptionPane.ERROR_MESSAGE);
            }
        }
    }
No me queda más que decirte que revises las versiones de los componentes de JasperReports que estas usando, revisa el reporte por posibles errores y elimina los try {} catch {} mientras estas depurando, recuerda que los 'parameters' No son los 'datos', y si lo deseas ... 'muestra el error que genera Jasper', para que 'posiblemente' alguien mas te de una solución.

Saludos,