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 "CustomerBySalesName" hinzugefügt.

In diesem Abschnitt instantiieren Sie den Bericht "CustomerBySalesName" und binden ihn an das CrystalReportViewer-Steuerelement.

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 "CustomerBySalesName" 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 "CustomerBySalesName" eine neue Deklaration auf Klassenebene hinzu, und verwenden Sie dabei den Variablennamen customerBySalesNameReport. Setzen Sie den Zugriffsmodifizierer auf "private".

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

<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>Sie haben die ConfigureCrystalReports()-Methode in <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic168.htm(v=VS.90)">Projekt-Setup</a> erstellt.</p></td>
</tr>
</tbody>
</table>

``` vb
customerBySalesNameReport = New CustomerBySalesName()
```

``` csharp
customerBySalesNameReport = new CustomerBySalesName();
```
  1. Binden Sie die ReportSource-Eigenschaft des CrystalReportViewer-Steuerelements in der nächsten Zeile unterhalb der Berichtinstantiierung an die instantiierte Berichtklasse (Variablenname: customerBySalesNameReport).

    myCrystalReportViewer.ReportSource = customerBySalesNameReport
    
    crystalReportViewer.ReportSource = customerBySalesNameReport;
    

Sie können nun beginnen, Ihr Projekt zu erstellen und auszuführen. Fahren Sie mit dem nächsten Abschnitt unten fort.

So instantiieren Sie den Bericht "CustomerBySalesName" 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 customerBySalesNameReport. Setzen Sie den Zugriffsmodifizierer auf "private".

``` vb
Private customerBySalesNameReport As ReportDocument
```

``` csharp
private ReportDocument customerBySalesNameReport;
```

<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.
``` vb
customerBySalesNameReport = New ReportDocument()
```

``` csharp
customerBySalesNameReport = new ReportDocument();
```
  1. Deklarieren Sie eine Zeichenfolgenvariable, geben Sie ihr den Namen reportPath, und weisen Sie ihr einen 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("CustomerBySalesName.rpt")
      
      string reportPath = Server.MapPath("CustomerBySalesName.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 & "\" & "CustomerBySalesName.rpt"
      
      string reportPath = Application.StartupPath + "\\" + "CustomerBySalesName.rpt";
      
  2. Rufen Sie die Load()-Methode der ReportDocument-Instanz auf, und übergeben Sie die reportPath-Zeichenfolgenvariable an sie.

    customerBySalesNameReport.Load(reportPath)
    
    customerBySalesNameReport.Load(reportPath);
    
  3. Binden Sie in der nächsten Zeile, die auf das Laden des Berichts folgt, die ReportSource-Eigenschaft des CrystalReportViewer-Steuerelements an die ReportDocument-Instanz.

    myCrystalReportViewer.ReportSource = customerBySalesNameReport
    
    crystalReportViewer.ReportSource = customerBySalesNameReport;
    

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: customerBySalesNameReport. 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.

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

  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 wird mit allen verfügbaren Datenzeilen angezeigt. Im nächsten Abschnitt beginnen Sie mit dem Filtern dieser Daten mithilfe der RecordSelectionFormula-Eigenschaft.
  1. Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.