lunes, 28 de noviembre de 2011

Problemas con Crystal Reports v8 (CR8) en Windows 7 de 64 bits (Win 7 x64)

 

Problemática

Se han suscitado en algunos proyectos en los que he estado involucrado diversos problemas relacionados a este tipo de instalación.

Como antecedentes y en específico, la aplicación es una Windows Application, esta desarrollada en VB NET (VS 2008) usando CR 8 con reportes que en su mayoría usan el controlador nativo de SQL server y su fuente de información en procedimientos almacenados (Stored procedures) desarrollador den T-SQL sobre la plataforma de base de datos SQL Server 2008.

La aplicación se ha instalado sobre diversos sistemas operativos(De 32 y 64 bits), que van desde Windows XP (Service pack 1), hasta Win 7.

La mayor cantidad de problemas han brotado sobre Windows vista y Windows 7 de 64 bits. El listado de problemas es tan extenso como variado y no será incluido explícitamente en esta publicación, pero por nombras las mas sobresalientes:

  • Errores indeterminados en cuya descripción se nombre la palabra HRESULT.
  • Errores nativos de Crystal Reports:
    • 20599
    • 20534
    • 20537
  • Errores de pre visualización:
    • Se despliega el reporte en blanco
    • Se intenta desplegar el reporte pero se queda inhibido (Pasmado)
    • Se pre visualiza momentáneamente el reporte cerrándose fracciones de segundo después Efecto Blink (Parpadeo)

 

Recomendaciones

 

A continuación se listan las recomendaciones que me han llevado a solucionar la mayoría (Prácticamente la totalidad) de los errores reportados o detectados en este escenario:

  • Quitar el prefijo “PROC(“ en la propiedad del Database/ Set Location de los reportes
  • Que el controlador utilizado en algún sub reporte no coincida con el del reporte que lo contiene. Por ejemplo: el controlador del reporte es OLEDB y el controlador del sub – reporte es SQL.
  • Que el procedimiento almacenado de la base de datos no cuenta con las siguientes prácticas
    • Lectura sucia masiva al inicio del procedimiento (SET TRANSACTION ISOLATION LEVEL READUNCOMMITTED)
    • Conteo de filas apagado en procedimientos que arrojan mas de un resultado (SET NOCOUNT ON)
    • Manejo explícito en tablas temporales de:
      • Nulos
      • Idioma (COLLATION)
      • Tipo de dato
    • Creación de tablas temporales explícitas [No crearlas al vuelo por medio de una consulta (INSERT - SELECT ó SELECT – INTO)]
    • Manejo constante de la cantidad de atributos de salida, esto quiere decir que no cambie ni la cantidad, tipo o nombre de los atributos o campos de salida resultados del procedimiento.
  • Falta de controladores o librerías para lo cual se debe de correr el paquete redistribuible para 32 bits. CRRedist2008_x86.msi. Se que el instalador es para un sistema operativo de 32 bits, no es un error, y no se debe de instalar el redistribuible para 64 bits aunque parezca en primera instancia lo mas adecuado o correcto, repito "NO” se debe de instalar CRRedist2008_x64, la versión que hace que los reportes funcionen óptimamente es el redistribuible de 32 bits que se menciona al inicio de este punto y de el cual se agrega vínculo de descarga, independientemente si el SO es de x64, lo correcto es el redistribuible de x32.
  • Bajar el UAC (User acceso control) de Windows 7 al mínimo
  • Que el idioma (collate) del servidor y la base de datos sea el mismo (SQL_Latin1_General_CP1_CI_AS)
  • Ejecutar siempre como administrador la aplicación realizando los siguientes pasos:
    • Entrar al menú inicio
    • Seleccionar el acceso directo a la aplicación
    • Dar clic derecho/ Propiedades
    • Elegir en la pestaña de “Compatibilidad”
    • Dar clic en el botón “Cambiar la configuración para todos los usuarios”
    • En el agrupador “Modo de compatibilidad”, seleccionar “Ejecutar este programa en modo de compatibilidad” y seleccionar de la lista desplegable “Windows XP Service Pack 3”
    • En el agrupador “Nivel de privilegio”, seleccionar “Ejecutar este programa como administrador” y dar clic en “Aceptar”
    • Presionar nuevamente el comando “Aceptar” en el cuadro de dialogo de las propiedades
    • Algunos problemas de pre visualización de reportes se solucionan Instalando CR8 completo en el cliente
  • Espero les sea de utilidad.

    6 comentarios:

    1. Hola, muchas gracias por el tiempo que dedicas a ayudar. Me ayudo mucho el link CRRedist2008_x86.msi pues tenia problemas con un so 64

      ResponderEliminar
    2. Gracias Ivan,

      Ya puedo modificar reportes en mi PC sin la maquina virtual :)


      Saludos desde GDL.

      ResponderEliminar
    3. Hola Ivan,

      Estoy programando con Visual Studio 2010 en windows 7 de 32 bits, realice varios reportes con CR y todo muy bien. Pero al momento de montar mi sitio en otra pc( maquina virtual con windows 7 de 32 bits) resulta que los reportes a veces me los muestra en blanco y en otras ocasiones me los muestra bien, trabajo con dataset para enviar los datos al reporte.

      Espero me puedas ayudar porque no he encontrado solución a mi problema.

      ResponderEliminar
    4. hola buen dia, tengo problemas ya que la aplicacion la realice en visual 2005, el ejecutable que se crea corre perfectamente en maquinas con xp pero ahora tengo unos equipos con windows 8 de 64 bits y me genera ese error de la libreria ayuda porfa

      ResponderEliminar