2010-11-30 10 views
5

Estoy creando un informe simple usando un objeto .NET de mi proyecto como fuente de datos, usando el método SetDatasource(). Sin embargo, cuando ejecuto el informe, aparece el error "Falló el inicio de sesión en la base de datos". Este informe no se conecta a un DB en absoluto. ¿Me he perdido algo aquí?¿Por qué me aparece el mensaje "Falló el inicio de sesión de la base de datos" en Crystal Reports al usar el objeto .NET como fuente de datos?

Muchas gracias, D.

añadido: supongo que probablemente ayudará si incluyo la acción del controlador. Es una prueba rápida y sucia, no lo que el método final se verá así:

public ActionResult StewardSheets(int showId, int groupId) 
{ 
    ReportClass rptH = new ReportClass(); 
    rptH.FileName = DataHelper.getReportFilePath("Test.rpt",this); 

    NZDSDataContext dataContext = new NZDSDataContext(); 
    var showDetails = (from s in dataContext.Shows 
         where s.ID == showId 
         select new StewardSheetModel 
         { 
          EventDate = s.EventDate.ToLongDateString(), 
          Region = s.Region.Name, 
          ShowTitle = s.Name 
         }).FirstOrDefault(); 

    List<StewardSheetModel> details = new List<StewardSheetModel>(); 
    details.Add(showDetails); 

    rptH.SetDataSource(details); 

    rptH.Load(); 
    Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 
    return File(stream, "application/pdf"); 
} 

FIJO: D'oh! Usé ReportClass en lugar de ReportDocument. Cambió esa línea y también utiliza Refresh() ya que Load() no es un método válido. ¡Ahora funciona bien!

+1

¿Cuáles son los parámetros de la fuente de datos? –

+0

Aquí hay una captura de pantalla de la fuente de datos. Espero que esto sea lo que estás preguntando. http://img262.imageshack.us/img262/3615/crystalreport.png – codedog

Respuesta

1

Solucionado mediante el uso de la clase apropiada: ReportDocument en lugar de ReportClass.

2

Comencé a obtener este cuadro de diálogo apareciendo después de cambiar el nombre del objeto .NET al que se referían mis informes. Para deshacerme del diálogo, tenía que asegurarme de que ninguna de las secciones o campos de mi informe hacía referencia al antiguo nombre del objeto .Net que era fácil de detectar. La solución para mí fue utilizar la función de cambio de nombre en el Asistente de base de datos para el informe.

+1

No he cambiado el nombre de la clase .NET desde que se creó el informe. Tampoco estoy mostrando el informe en un visor: se transmite como aplicación/pdf desde un controlador MVC. Este error ocurrió desde la primera vez que llamé a esa URL, esto nunca funcionó ... – codedog

7

Si está utilizando DataSets de ADO.NET como fuente de datos, es posible que la definición del conjunto de datos no se sincronice con la definición del informe. Al seleccionar la opción Base de datos-> Verificar base de datos del menú contextual del diseñador de informes, a menudo se soluciona este problema.

Además, obtendrá este error si su informe tiene tablas vinculadas y no puede establecer el origen de datos para una de las tablas. La solución es eliminar la tabla del informe o establecer su fuente de datos correctamente.

Por ejemplo, si su informe tiene una tabla de clientes y una tabla de pedidos unidos entre sí en alguna clave, tendrá que establecer el origen de datos para ambas tablas. Si olvida y establece solo uno, obtendrá un error de "Error de inicio de sesión en la base de datos" que es bastante engañoso.

// Create a new customer orders report. 
CustomerOrdersReport report = new CustomerOrdersReport(); 

// Get the report data. 
DataTable customersTable = getCustomersData(); 
DataTable ordersTable = getOrdersData(); 

// Set datasources. 
report.Database.Tables["Customers"].SetDataSource(customersTable); 
report.Database.Tables["Orders"].SetDataSource(ordersTable); // Don't forget this line like I did!! 
3

Por favor intente, haga clic derecho en Informe -> Base de Datos-> Verificar Base de Datos.

Si aparece el cuadro de diálogo, busque su archivo .xsd DataSet (por ejemplo, DataSet1.xsd) y Aplicar.

Mi problema se resuelve de esta manera.

1

Estuve luchando con este error durante un par de días. Tengo un proyecto de formularios web .NET que usa CrystalReportViewer para cargar un Crystal Report. En lugar de cargar el informe, seguí recibiendo "Falló el inicio de sesión en la base de datos".

Abrí el archivo RPT en Crystal Report Designer y fueron a Database -> Verify Database

enter image description here

Esto me dio un error más específico. ¡¡¡FINALMENTE!!!

enter image description here

localicé el archivo XSD, se trasladó a la ubicación correcta y BOOM

0

En mi caso me olvido del origen de datos a una tabla de datos. algo como esto

rpt.Database.Tables ("Cuenta"). SetDataSource (CType (DataSource.Account, DataTable))

0

Uso cliente nativo de conexión Versión 10.

0

que tenía que hacer escritura por debajo de la línea de código para deshacerse del "error de inicio de sesión de base de datos"

CrystalDecisions.Shared.TableLogOnInfo li; 
li.ConnectionInfo.IntegratedSecurity = false; 
Cuestiones relacionadas