Reportes con Crystal 2008 en Aplicación C/S Java

Obsydian, Cool:Plex, Advantage Plex, AllFusion Plex...

Moderadores: Jorge Ubeda, pacopicon

Reportes con Crystal 2008 en Aplicación C/S Java

Notapor vhorozco » Mar Jul 13, 2010 3:28 am

Saludos amigos;

Comparto con ustedes un pequeño problema que se me presenta en una aplicación Java que estoy poniendo en producción. Les agradezco de antemano por sus valiosos aportes:

1.- La aplicación desarrollamos en Plex 6.0, para la plataforma Java con JDK_1.5.0.15.
2.- Los reportes están creados con Crystal 2008.
3.- La versión de las librerías de runtime de Crystal es la 12 (crjava-runtime_12.2.207)
4.- Las llamadas a los reportes son realizadas a través de source code (s).

En un contexto general, el programa funciona a la perfección incluyendo las llamadas a los reportes y su consecuente exportación de datos a varios formatos, a excepción de; cuando el sistema previamente ha presentado en pantalla un mensaje de control, confirmación o alerta (programado con el "objeto Message").

Cuando esto sucede (ha sido desplegado en pantalla un objeto "Message"), y realizamos una llamada al reporte, la ventana de consola de Java, muestra una serie de mensajes de excepción, aunque la información se presenta en pantalla, desaparecen las opciones de exportación, por consecuencia es imposible exportar hasta que se reinicie la aplicación.

Les Agragezco por sus oportunos comentarios.

Atentamente.

Hugo Orozco C.


Las excepciones inician de la siguiente manera:

Problem notifying tab observers:
java.lang.NullPointerException
at com.crystaldecisions.ReportViewer.ReportViewerBean.CurrentViewNameChanged(Unknown Source)
at ...............
vhorozco
 
Mensajes: 20
Registrado: Mié Ago 12, 2009 11:14 pm
Ubicación: Mexico

Notapor c.braune » Vie Jul 16, 2010 12:26 pm

Hola vhorozco,

tengo la misma problema aqui. Creo que esta relacioando con el Swing Thread.

Asi he intentado usar SwingWorker:

Código: Seleccionar todo
worker = new SwingWorker<String, Void>(){
            
              @Override
              protected String doInBackground(){
                 SampleViewerFrame.showViewer ();      
                 return "nothing";
              }
      
              @Override
              protected void done(){
             
              }
            };
            // Execute the SwingWorker; the GUI will not freeze
            worker.execute();
          }


Pero el resultado sigue siendo el mismo :(

Veo el Report Viewer y en la ventana todo parece bien, pero falta el tab y en la consola veo la exception.

Usted ha encontrado una solucion?
c.braune
 
Mensajes: 2
Registrado: Vie Jul 16, 2010 12:20 pm

Notapor vhorozco » Vie Jul 16, 2010 4:48 pm

Hola c.braune,


Bueno, lo que he identificado como causa del problema son los cuadros de diálogo de mensajes de Plex(sean estos Dialog message o Equiry Message). Siempre que uno de estos objetos es desplegado en pantalla, el reporte arroja la excepción mencionada, caso contrario el reporte me funciona a la perfección.

En cuanto a la solución, lo que he hecho es llamar por medio de un source code (mensajepersonalizado) al método JOptionPane.showMessageDialog(), de la siguiente manera:

"JOptionPane.showMessageDialog(null, &(1:).toString(), "Información", JOptionPane.ERROR_MESSAGE); "
Con parámetro de entrada que reciba el texto definido en el objeto Message de Plex, así que, en mi Diagrama de acción queda de la siguiente forma:

Format Message Message: Funcion.EditSuite.Grid.Actualizcion Terminada,
API Call Source code: Funcion.mensajepersonalizado

La primera línea recupera en una variable, el texto definido en el Objeto Message.
La segunda llama al source code, que éste a su vez, tiene la llamada al método (OptionPane.showMessageDialog()) pasando como parámetro el texto de la variable.

Me parece una solución no muy óptima pero me resolvió el problema, que a mi juicio es de Plex.

Espero que esta respuesta contribuya para su fines.

Atentamente.
Hugo Orozco C
vhorozco
 
Mensajes: 20
Registrado: Mié Ago 12, 2009 11:14 pm
Ubicación: Mexico

Notapor c.braune » Sab Jul 17, 2010 4:31 pm

yo tb he encontrado algo nuevo. En el fin de la exception aparece:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at sun.font.FontDesignMetrics.stringWidth(Unknown Source)
at com.crystaldecisions.Utilities.RectTopTabBar.a(Unknown Source)

Eso es, cuando el Viewer escribe el texto en la tab (En mi caso aparece "Hauptbericht" o en ingles "Main Topic")

No se, de que depende el idioma, que usa el Report Viewer aqui a lo mejor el Locale de la plataforma (en mi caso eclipse), de donde llamamos el viewer?

Me he dado cuenta: si cambio el idioma de mi plataforma a aleman, todo funciona perfecto. Si el idioma de mi plataforma es ingles, aparece la exception.

Asi como resumen hasta ahora, la fuente del problema tiene que ser el locale.

Atentamente

Christian
c.braune
 
Mensajes: 2
Registrado: Vie Jul 16, 2010 12:20 pm


Volver a Plex

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron