Binden des Berichts

In Projekt-Setup haben Sie ein CrystalReportViewer-Steuerelement auf dem Web Form oder Windows Form platziert. Im vorherigen Schritt haben Sie dem Projekt den Bericht "NorthwindCustomers" hinzugefügt.

In diesem Abschnitt instantiieren Sie den Bericht "NorthwindCustomers" und binden ihn an das CrystalReportViewer-Steuerelement. Anschließend testen Sie, ob der Bericht ordnungsgemäß angezeigt wird, wenn für dessen Parameterfeld keine aktuellen Werte festgelegt wurden.

Sie können den Bericht auf zweifache Weise instantiieren und binden:

  • als eingebetteten Bericht
  • als nicht eingebetteten Bericht

Entscheiden Sie sich für eine der folgenden schrittweisen Anleitungen.

  • Wenn Sie eingebettete Berichte verwenden, führen Sie die folgende Prozedur aus, um den Bericht als eingebetteten Bericht zu instantiieren.
  • Wenn Sie nicht eingebettete Berichte verwenden, führen Sie die zweite Prozedur aus, um den Bericht als nicht eingebetteten Bericht zu instantiieren.

So instantiieren Sie den Bericht "NorthwindCustomers" als eingebetteten Bericht und binden ihn an das CrystalReportViewer-Steuerelement

  1. Öffnen Sie das Web Form oder Windows Form.

  2. Klicken Sie im Menü Ansicht auf Code.

  3. Fügen Sie für die Wrapperklasse des Berichts "NorthwindCustomers" eine neue Deklaration auf Klassenebene hinzu, und verwenden Sie dabei den Variablennamen northwindCustomersReport. Setzen Sie den Zugriffsmodifizierer auf "private".

    Private northwindCustomersReport As NorthwindCustomers
    
    private NorthwindCustomers northwindCustomersReport;
    
  4. Instantiieren Sie die Berichtwrapperklasse innerhalb der ConfigureCrystalReports()-Methode.

    NoteAnmerkung

    Sie haben die ConfigureCrystalReports()-Methode in Projekt-Setup erstellt.

    northwindCustomersReport = New NorthwindCustomers()
    
    northwindCustomersReport = new NorthwindCustomers();
    
  5. Binden Sie die ReportSource-Eigenschaft des CrystalReportViewer-Steuerelements in der nächsten Zeile unterhalb der Berichtinstantiierung an die instantiierte Berichtklasse (Variablenname: northwindCustomersReport).

    myCrystalReportViewer.ReportSource = northwindCustomersReport
    
    crystalReportViewer.ReportSource = northwindCustomersReport;
    

Sie können nun beginnen, Ihr Projekt zu erstellen und auszuführen. Es ist davon auszugehen, dass das Laden des Berichts fehlschlagen wird, da noch kein Code zur Anmeldung bei der Datenbank geschrieben wurde.

So instantiieren Sie den Bericht "NorthwindCustomers" als nicht eingebetteten Bericht und binden ihn an das CrystalReportViewer-Steuerelement

  1. Öffnen Sie das Web Form oder Windows Form.

  2. Klicken Sie im Menü Ansicht auf Code.

  3. Fügen Sie für die Berichtwrapperklasse ReportDocument eine neue Deklaration auf Klassenebene hinzu, und verwenden Sie dabei den Variablennamen northwindCustomersReport. Setzen Sie den Zugriffsmodifizierer auf "private".

``` vb
Private northwindCustomersReport As ReportDocument
```

``` csharp
private ReportDocument northwindCustomersReport;
```

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\xkh1wxd8.alert_note(de-de,VS.90).gif" alt="Note" class="note" />Anmerkung</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Die ReportDocument-Klasse ist ein Element des CrystalDecisions.CrystalReports.Engine-Namespaces. Sie haben unter <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic168.htm(v=VS.90)">Projekt-Setup</a> eine der Deklarationen &quot;Imports&quot; [Visual Basic] oder &quot;using&quot; [C#] für diesen Namespace hinzugefügt. Wenn Sie ReportDocument instantiieren und einen Bericht in den Namespace laden, können Sie über das SDK auf den Bericht zugreifen, ohne den Bericht einzubetten.</p></td>
</tr>
</tbody>
</table>
  1. Instantiieren Sie innerhalb der (in Projekt-Setup erstellten) ConfigureCrystalReports()-Methode die ReportDocument-Klasse.

    northwindCustomersReport = New ReportDocument()
    
    northwindCustomersReport = new ReportDocument();
    
  2. Deklarieren Sie eine Zeichenfolgenvariable, geben Sie ihr den Namen "reportPath", und weisen Sie ihr den Laufzeitpfad zum lokalen Bericht zu. Dieser Pfad wird für Website- und Windows-Projekte unterschiedlich definiert:

    • Bei einer Website übergeben Sie den Namen der lokalen Berichtsdatei als Zeichenfolgenparameter an die Server.MapPath()-Methode. Dadurch wird der lokale Bericht dem Dateiverzeichnispfad auf der Festplatte zur Laufzeit zugeordnet.

      Dim reportPath As String = Server.MapPath("NorthwindCustomers.rpt")
      
      string reportPath = Server.MapPath("NorthwindCustomers.rpt");
      
    • Bei einem Windows-Projekt verketten Sie die Application.StartupPath-Eigenschaft mit einem umgekehrten Schrägstrich und dem Namen der lokalen Berichtsdatei. In diesem Fall wird der Bericht demselben Verzeichnis zugeordnet, in dem sich auch die ausführbare Windows-Datei befindet.

      NoteAnmerkung

      Zur Kompilierungszeit kopieren Sie den Bericht in das Verzeichnis, in dem sich die ausführbare Datei befindet.

      Dim reportPath As String = Application.StartupPath & "\" & "NorthwindCustomers.rpt"
      
      string reportPath = Application.StartupPath + "\\" + "NorthwindCustomers.rpt";
      
  3. Rufen Sie die Load()-Methode der ReportDocument-Instanz auf, und übergeben Sie die reportPath-Zeichenfolgenvariable an sie.

``` vb
northwindCustomersReport.Load(reportPath)
```

``` csharp
northwindCustomersReport.Load(reportPath);
```
  1. Binden Sie die ReportSource-Eigenschaft von CrystalReportViewer an die ReportDocument-Instanz.

    myCrystalReportViewer.ReportSource = northwindCustomersReport
    
    crystalReportViewer.ReportSource = northwindCustomersReport;
    

So überprüfen Sie das Laden des Berichts "NorthwindCustomers"

Unabhängig davon, ob Sie sich für die Instantiierung der Klasse eines eingebetteten oder nicht eingebetteten Berichts über die ReportDocument-Klasse entschieden haben, wird immer derselbe Variablenname verwendet: northwindCustomersReport. Dies ermöglicht Ihnen in den folgenden Prozeduren die Verwendung eines allgemeinen Codesatzes.

Sie können nun beginnen, Ihr Projekt zu erstellen und auszuführen. Es ist davon auszugehen, dass das Laden des Berichts fehlschlagen wird, da noch kein Code zur Anmeldung bei der Datenbank geschrieben wurde.

  1. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  2. Sollten Buildfehler vorhanden sein, beheben Sie diese jetzt bitte.

  3. Bei einem nicht eingebetteten Bericht in einem Windows-Projekt suchen Sie die kompilierte ausführbare Windows-Datei im Unterverzeichnis \bin\ [Visual Basic] oder \bin\debug\ [C#], und kopieren Sie den Bericht in dieses Unterverzeichnis.

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\xkh1wxd8.alert_note(de-de,VS.90).gif" alt="Note" class="note" />Anmerkung</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Damit der nicht eingebettete Bericht von der ausführbaren Windows-Datei zur Laufzeit geladen wird, muss der Bericht im selben Verzeichnis wie die ausführbare Windows-Datei gespeichert werden.</p></td>
</tr>
</tbody>
</table>
  1. Klicken Sie im Menü Debuggen auf Debuggen starten.
Der Bericht "NorthwindCustomers" wird nicht angezeigt, da kein Code für die Datenbankanmeldung hinzugefügt wurde.

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\xkh1wxd8.alert_note(de-de,VS.90).gif" alt="Note" class="note" />Anmerkung</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Die Ergebnisse können je nach verwendeter Crystal Reports-Version variieren. Wenn Sie beispielsweise Crystal Reports 10 oder höher installiert haben, wird ein Formular mit der Aufforderung angezeigt, Datenbankanmeldeinformationen für diesen Bericht einzugeben. Diese Funktion ist neu in Crystal Reports Developer. Wenn Sie eine frühere Version von Crystal Reports verwenden, wird eine Ausnahme ausgelöst. In beiden Fällen müssen die nächsten Arbeitsschritte ausgeführt werden, um eine voll funktionsfähige Anwendung zu erhalten.</p></td>
</tr>
</tbody>
</table>
  1. Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.