Binden des Berichts

Sofern Sie die Vorbereitungen für dieses Lernprogramm entsprechend den Anweisungen im Abschnitt Projekt-Setup getroffen haben, befindet sich jetzt ein CrystalReportViewer-Steuerelement auf dem Web Form. Damit Sie Berichtbestandteile anzeigen lassen können, muss aber das CrystalReportPartsViewer-Steuerelement verwendet werden.

In diesem Abschnitt instantiieren Sie den Bericht "Customers" und binden ihn an das CrystalReportPartsViewer-Steuerelement. Anschließend testen Sie, ob die Berichtbestandteile des Berichts, die Sie in den vorherigen Schritten erstellt haben, angezeigt werden.

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.

Weiter zu Filtern von Daten im Bericht.

So instantiieren Sie den Bericht "Customers" als eingebetteten Bericht und binden ihn an das CrystalReportPartsViewer-Steuerelement

  1. Öffnen Sie das Web Form.

  2. Klicken Sie im Menü Ansicht auf Designer.

  3. Löschen Sie das CrystalReportViewer-Steuerelement.

  4. Öffnen Sie in der Toolbox den Knoten Crystal Reports, um das CrystalReportPartsViewer-Steuerelement zu suchen.

  5. Ziehen Sie das CrystalReportPartsViewer-Steuerelement auf das Web Form.

  6. Legen Sie im Fenster Eigenschaften die ID-Eigenschaft fest:

    • Setzen Sie die ID-Eigenschaft bei Visual Basic-Websites auf "myCrystalReportPartsViewer".
    • Setzen Sie die ID-Eigenschaft bei C#-Websites auf "crystalReportPartsViewer".
  7. Klicken Sie im Menü Ansicht auf Code, um die CodeBehind-Klasse für dieses Web Form anzeigen zu lassen.

  8. Fügen Sie für die Wrapperklasse des Berichts "Customers" eine neue Deklaration auf Klassenebene hinzu, und benennen Sie diese mit dem Variablennamen customersReport. Setzen Sie den Zugriffsmodifizierer auf "private".

    Private customersReport As Customers
    
    private Customers customersReport;
    
  9. Instantiieren Sie die Berichtwrapperklasse innerhalb der ConfigureCrystalReports()-Methode.

    NoteAnmerkung

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

    customersReport = New Customers()
    
    customersReport = new Customers();
    
  10. Binden Sie die ReportSource-Eigenschaft des CrystalReportPartsViewer-Steuerelements in der nächsten Zeile unterhalb der Berichtinstantiierung an die instantiierte Berichtklasse (Variablenname: customersReport).

    myCrystalReportPartsViewer.ReportSource = customersReport
    
    crystalReportPartsViewer.ReportSource = customersReport;
    
    NoteAnmerkung

    Auf die Instanz des CrystalReportPartsViewer-Steuerelements kann codegesteuert zugegriffen werden, da das Steuerelement dem Web Form bzw. Windows Form hinzugefügt wurde. Wenn die Instanz des CrystalReportPartsViewer-Steuerelements von IntelliSense nicht erkannt wird, sollten Sie überprüfen, ob das CrystalReportPartsViewer-Steuerelement dieser CodeBehind-Klasse als Deklaration auf Klassenebene hinzugefügt wurde.

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

Sie können nun beginnen, Ihr Projekt zu erstellen und auszuführen.

  1. Öffnen Sie das Web 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 customersReport. Setzen Sie den Zugriffsmodifizierer auf "private".

``` vb
Private customersReport As ReportDocument
```

``` csharp
private ReportDocument customersReport;
```

<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 (während eines der Verfahren unter Projekt-Setup hinzugefügten) ConfigureCrystalReports()-Methode die ReportDocument-Klasse.

    customersReport = New ReportDocument()
    
    customersReport = 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("Customers.rpt")
      
      string reportPath = Server.MapPath("Customers.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 & "\" & "Customers.rpt"
      
      string reportPath = Application.StartupPath + "\\" + "Customers.rpt";
      
  3. Rufen Sie die Load()-Methode der ReportDocument-Instanz auf, und übergeben Sie die reportPath-Zeichenfolgenvariable an sie.

``` vb
customersReport.Load(reportPath)
```

``` csharp
customersReport.Load(reportPath);
```
  1. Binden Sie in der nächsten Zeile, die auf das Laden des Berichts folgt, die ReportSource-Eigenschaft des CrystalReportPartsViewer-Steuerelements an die ReportDocument-Instanz.

    myCrystalReportPartsViewer.ReportSource = customersReport
    
    crystalReportPartsViewer.ReportSource = customersReport;
    

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

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: customersReport. 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 der Bericht nicht geladen wird, da noch kein Code zum Festlegen eines Werts für das Parameterfeld "Ort" geschrieben wurde. Später in diesem Lernprogramm werden Sie einen Wert für das Parameterfeld "Ort" hinzufügen.

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

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

  3. Klicken Sie im Menü Debuggen auf Debuggen starten.

Der Bericht "Customers" wird im Webbrowser angezeigt.
  1. Klicken Sie auf ein Land, um eine Liste mit Regionen anzeigen zu lassen.

  2. Klicken Sie auf eine Region, um die Felder "Kundenname", "Vorjahresumsatz" und "Ort" anzeigen zu lassen.

  3. Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.