2010-11-30 5 views
5

Ich erstelle einen einfachen Bericht mit einem .NET-Objekt aus meinem Projekt als Datenquelle, mit SetDatasource() Methode. Wenn ich den Bericht ausführe, erhalte ich jedoch den Fehler "Datenbankanmeldung fehlgeschlagen". Dieser Bericht verbindet sich überhaupt nicht mit einer Datenbank - habe ich hier etwas übersehen?Warum bekomme ich "Datenbankanmeldung fehlgeschlagen" in Crystal Reports, wenn .NET-Objekt als Datenquelle verwendet wird?

Vielen Dank, D.

ZUSÄTZLICH: Ich denke, es wird wahrscheinlich helfen, wenn ich die Controller-Aktion enthalten. Es ist ein schneller und schmutziger Test, nicht das, was die letzte Methode aussehen wird:

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"); 
} 

FIXED: D'oh! Ich habe ReportClass anstelle von ReportDocument verwendet. Diese Zeile wurde geändert und auch Refresh() verwendet, da Load() keine gültige Methode ist. Jetzt funktioniert es gut!

+1

Was sind die Einstellungen der Datenquelle? –

+0

Hier ist ein Screenshot der Datenquelle - ich hoffe, dass Sie das fragen? http://img262.imageshack.us/img262/3615/crystalreport.png – codedog

Antwort

1

Durch die Verwendung der entsprechenden Klasse behoben: ReportDocument statt ReportClass.

2

Ich habe damit begonnen, diesen Dialog aufzurufen, nachdem ich den Namen des .NET-Objekts geändert hatte, auf das sich meine Berichte bezogen. Um den Dialog zu entfernen, musste ich sicherstellen, dass keiner meiner Berichtsabschnitte oder Felder auf den alten Namen des .Net-Objekts verweisen, das leicht zu erkennen war. Die Fehlerbehebung für mich war die Verwendung der Umbenennungsfunktion im Datenbankexperten für den Bericht.

+1

Ich habe den Namen der .NET-Klasse seit der Erstellung des Berichts nicht geändert. Ich zeige den Bericht auch nicht in einem Viewer - er wird als Anwendung/PDF von einem MVC-Controller gestreamt. Dieser Fehler ist seit dem ersten Aufruf dieser URL aufgetreten - das hat noch nie funktioniert ... – codedog

7

Wenn Sie ADO.NET DataSets als Datenquelle verwenden, ist es möglich, dass die DataSet-Definition nicht mit der Definition im Bericht übereinstimmt. Wenn Sie die Option Datenbank-> Datenbank überprüfen im Kontextmenü des Berichts-Designers auswählen, wird dieses Problem häufig behoben.

Außerdem erhalten Sie diesen Fehler, wenn Ihr Bericht Tabellen verknüpft hat und Sie die Datenquelle für eine der Tabellen nicht festlegen können. Die Fehlerbehebung besteht darin, die Tabelle entweder aus dem Bericht zu entfernen oder ihre Datenquelle korrekt festzulegen.

Wenn Ihr Bericht beispielsweise eine Customers-Tabelle und eine Orders-Tabelle enthält, die mit einem Schlüssel verknüpft sind, müssen Sie die Datenquelle für beide Tabellen festlegen. Wenn Sie nur einen vergessen und setzen, erhalten Sie einen Fehler bei der Fehlermeldung "Datenbankanmeldung", der ziemlich irreführend ist.

// 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

Bitte versuchen Sie es mit der rechten Maustaste auf Bericht -> Datenbank-> Datenbank verifizieren.

Wenn das Dialogfeld angezeigt wird, suchen Sie die Datei DataSet .xsd (z. B. DataSet1.xsd) und Apply.

Mein Problem auf diese Weise gelöst.

1

Ich habe mit diesem Fehler für ein paar Tage gekämpft. Ich habe ein .NET Webforms-Projekt, das CrystalReportViewer verwendet, um einen Crystal Report zu laden. Anstatt des Ladens des Berichts habe ich "Datenbankanmeldung fehlgeschlagen" erhalten.

öffnete ich die RPT-Datei in Crystal Report Designer und ging zu Database -> Verify Database

enter image description here

Dies gab mir eine spezifischere Fehler. ENDLICH!!!

enter image description here

aufgespürt ich die XSD-Datei herunter, um es in die richtige Position bewegt und BOOM

0

In meinem Fall i-Datenquelle auf eine Datentabelle zu setzen vergessen. so etwas wie dieses

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

0

Verwendung nativer Client-Verbindung Version 10.

0

Ich hatte schreiben zu tun die folgende Zeile Code, um den "Datenbank Login Fehler" loszuwerden

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