Error del motor de consulta desconocido en Crystal Reports (.NET 4.0+)


1. Síntomas

Al intentar cargar o visualizar un reporte de Crystal Reports (especialmente versiones antiguas como la 2008 o v12.x) en una aplicación desarrollada con .NET Framework 4.0 o superior, se lanza la siguiente excepción:

CrystalDecisions.CrystalReports.Engine.DataSourceException: ‘Error del motor de consulta desconocido’ COMException: ‘Error del motor de búsqueda desconocido’

El error ocurre específicamente en la línea de código: rpt.SetDataSource(dataset);

2. Causa Raíz

Este problema es un conflicto de políticas de activación de runtime.

Las librerías de Crystal Reports 2008 fueron compiladas con .NET Framework 2.0. Por defecto, .NET 4.0 y versiones posteriores utilizan un nuevo modelo de carga de ensamblados que no es compatible con el modo en que Crystal Reports intenta cargar sus dependencias de versiones anteriores. Al no poder cargar el motor de datos correctamente, Crystal lanza un error genérico de «motor desconocido».

3. Solución

Para resolver esto, es necesario forzar a la aplicación a utilizar la política de activación de runtime heredada (Legacy).

Pasos a seguir:

  1. En el Explorador de Soluciones de Visual Studio, localiza el archivo App.config (o Web.config si es una aplicación web).
  2. Localiza la sección <configuration>.
  3. Inserta o modifica la etiqueta <startup> para incluir el atributo useLegacyV2RuntimeActivationPolicy="true".

Código de ejemplo:

XML

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  
</configuration>

4. Notas Adicionales

  • Implementación: Al distribuir la aplicación (Deployment), asegúrate de que el archivo generado NombreDeTuApp.exe.config contenga estas líneas, de lo contrario el error reaparecerá en los equipos de los clientes.
  • Plataforma: Se recomienda que el proyecto esté configurado para compilar en modo x86 (32 bits) para asegurar la compatibilidad total con el motor de Crystal Reports 2008.

#CrystalReports #DotNet40 #DataSourceException #LegacyRuntime #AppConfig

About balam