Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können der CodeBehind-Klasse jetzt Anmeldecode für den Unterbericht hinzufügen. Zunächst erstellen Sie die private Hilfsmethode SetDBLogonForSubreports().
So erstellen und codieren Sie die SetDBLogonForSubreport()-Methode
Öffnen Sie das Web Form oder Windows Form.
Klicken Sie im Menü Ansicht auf Code.
Erstellen Sie am Ende der Klasse eine neue private Methode mit dem Namen SetDBLogonForSubreports(), die die beiden Parameter ConnectionInfo und ReportDocument enthält.
``` vb
Private Sub SetDBLogonForSubreports(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument)
End Sub
```
``` csharp
private void SetDBLogonForSubreports(ConnectionInfo connectionInfo, ReportDocument reportDocument)
{
}
```
- Rufen Sie innerhalb dieser Methode die Sections-Instanz aus der Sections-Eigenschaft der ReportDefinition-Eigenschaft des ReportDocument-Parameters ab.
<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>Sections ist eine Indexklasse, die Instanzen der Section-Klasse enthält.</p></td>
</tr>
</tbody>
</table>
``` vb
Dim mySections As Sections = myReportDocument.ReportDefinition.Sections
```
``` csharp
Sections sections = reportDocument.ReportDefinition.Sections;
```
Erstellen Sie eine foreach-Schleife, die jede Section-Instanz in der Instanz der Sections-Indexklasse durchläuft.
For Each mySection As Section In mySections Nextforeach(Section section in sections) { }Rufen Sie innerhalb der foreach-Schleife die ReportObjects-Instanz aus der ReportObjects-Eigenschaft der Section-Instanz ab.
Dim myReportObjects As ReportObjects = mySection.ReportObjectsReportObjects reportObjects = section.ReportObjects;Erstellen Sie innerhalb der foreach-Schleife eine neue geschachtelte foreach-Schleife, die jede ReportObject-Instanz in der Instanz der ReportObjects-Indexklasse durchläuft.
For Each myReportObject As ReportObject In myReportObjects Nextforeach(ReportObject reportObject in reportObjects) { }Erstellen Sie innerhalb der geschachtelten foreach-Schleife einen Bedingungsblock, durch den getestet wird, ob die Kind-Eigenschaft der ReportObject-Instanz gleich der SubreportObject-Auswahl der ReportObjectKind-Enumeration ist.
If myReportObject.Kind = ReportObjectKind.SubreportObject Then End Ifif(reportObject.Kind == ReportObjectKind.SubreportObject) { }Wandeln Sie die ReportObject-Instanz innerhalb des Bedingungsblockes in eine SubreportObject-Instanz um.
Dim mySubreportObject As SubreportObject = CType(myReportObject, SubreportObject)SubreportObject subreportObject = (SubreportObject)reportObject;Deklarieren Sie, während Sie sich innerhalb des Bedingungsblocks befinden, eine neue Instanz von ReportDocument als subReportDocument-Variable, und füllen Sie sie mit Werten, indem Sie die OpenSubreport()-Methode der SubreportObject-Instanz aufrufen.
``` vb
Dim subReportDocument As ReportDocument = mySubreportObject.OpenSubreport(mySubreportObject.SubreportName)
```
``` csharp
ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
```
- Rufen Sie zuletzt innerhalb des Bedingungsblocks die ursprüngliche SetDBLogonForReport()-Methode auf, und übergeben Sie den ConnectionInfo-Parameter und die neue subReportDocument-Variable.
``` vb
SetDBLogonForReport(myConnectionInfo, subReportDocument)
```
``` csharp
SetDBLogonForReport(connectionInfo, subReportDocument);
```
So ändern Sie die ConfigureCrystalReports()-Methode für den Zugriff auf den Datenbankanmeldecode für Unterberichte
In dieser schrittweisen Anleitung wurde eine Methode zum Abrufen aller möglichen Unterberichte als ReportDocument-Instanzen erstellt. Jede ReportDocument-Instanz des Unterberichts wird daraufhin an die ursprüngliche Methode übergeben, die die Informationen zur Anmeldung bei einer sicheren SQL Server-Datenbank festlegt.
Für den Zugriff auf diese Methode muss jedoch die ConfigureCrystalReports()-Methode geändert werden, damit die Datenbankanmeldeinformationen der Unterberichte verarbeitet werden.
Geben Sie in der ConfigureCrystalReports()-Methode oberhalb der Zeile, durch die der Bericht an das CrystalReportViewer-Steuerelement gebunden wird, einige Zeilenumbrüche in den Code ein.
Geben Sie innerhalb der Zeilen einen Aufruf der SetDBLogonForSubreports()-Methode ein, indem Sie die ConnectionInfo-Instanz und den Bericht NorthwindCustomers übergeben.
``` vb
SetDBLogonForSubreports(myConnectionInfo, northwindCustomersReport)
```
``` csharp
SetDBLogonForSubreports(connectionInfo, northwindCustomersReport);
```
So überprüfen Sie das Laden des Berichts "NorthwindCustomers"
Auf diesen Aufruf folgt der ursprüngliche Code, durch den der Bericht an das CrystalReportViewer-Steuerelement gebunden wird.
Sie können nun beginnen, Ihr Projekt zu erstellen und auszuführen. Es ist davon auszugehen, dass der Bericht zusammen mit dem Unterbericht erfolgreich geladen wird, da jetzt Code zum Anmelden von Unterberichten bei der Datenbank geschrieben wurde.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Sollten Buildfehler vorhanden sein, beheben Sie diese jetzt bitte.
Klicken Sie im Menü Debuggen auf Debuggen starten.
Der Bericht "NorthwindCustomers" wird zusammen mit seinem neuen Unterbericht "CustomerOrders" erfolgreich angezeigt.
Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.