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.
Jetzt können Sie der CodeBehind-Klasse den Anmeldecode hinzufügen. Zunächst erstellen Sie eine private Hilfsmethode mit dem Namen SetDBLogonForReport().
So erstellen und codieren Sie die SetDBLogonForReport()-Methode
Kehren Sie zur CodeBehind-Klasse dieses Web Forms oder Windows Forms zurück.
Erstellen Sie am Ende der Klasse eine neue private Methode mit dem Namen SetDBLogonForReport(), die die beiden Parameter ConnectionInfo und ReportDocument enthält.
``` vb
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument)
End Sub
```
``` csharp
private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument)
{
}
```
- Rufen Sie innerhalb dieser Methode die Tables-Instanz aus der Tables-Eigenschaft der Database-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>Tables ist eine Indexklasse, die Instanzen der Table-Klasse enthält.</p></td>
</tr>
</tbody>
</table>
``` vb
Dim myTables As Tables = myReportDocument.Database.Tables
```
``` csharp
Tables tables = reportDocument.Database.Tables;
```
- Erstellen Sie eine foreach-Schleife, die jede Table-Instanz in der Instanz der Tables-Indexklasse durchläuft.
<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 müssen der Table-Klasse den vollständigen Namespacepfad hinzufügen, um sie von der Table-Klasse des System.Web.UI.WebControls-Namespace zu unterscheiden.</p></td>
</tr>
</tbody>
</table>
``` vb
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
Next
```
``` csharp
foreach(CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
}
```
Rufen Sie innerhalb der foreach-Schleife die TableLogonInfo-Instanz aus der LogOnInfo-Eigenschaft der Table-Instanz ab.
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfoTableLogOnInfo tableLogonInfo = table.LogOnInfo;Setzen Sie die ConnectionInfo-Eigenschaft von TableLogonInfo innerhalb der foreach-Schleife auf den ConnectionInfo-Parameter.
myTableLogonInfo.ConnectionInfo = myConnectionInfotableLogonInfo.ConnectionInfo = connectionInfo;Übergeben Sie die TableLogonInfo-Instanz innerhalb der foreach-Schleife als Parameter an die ApplyLogonInfo-Methode der Table-Instanz.
myTable.ApplyLogOnInfo(myTableLogonInfo)table.ApplyLogOnInfo(tableLogonInfo);
Durch dieses Verfahren wurde eine Methode zum Festlegen der Anmeldeinformationen für die Datenbank erstellt. Die ConfigureCrystalReports()-Methode muss jedoch geändert werden, um auf diese Methode zuzugreifen, damit ersichtlich ist, dass der Bericht über Datenbankanmeldeinformationen verfügt.
Zum Ändern der ConfigureCrystalReports()-Methode sind zwei Aktionen erforderlich:
- Konfigurieren der ConnectionInfo-Instanz.
- Aufrufen der SetDBLogonForReport()-Methode.
So ändern Sie die ConfigureCrystalReports()-Methode für den Zugriff auf den Datenbankanmeldecode
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.
Deklarieren und instantiieren Sie innerhalb dieser Zeilen die ConnectionInfo-Klasse.
<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 auf die ConnectionInfo-Klasse zugegriffen werden kann, fügen Sie am Anfang der CodeBehind-Klasse die Anweisung "Imports" [Visual Basic] oder "using" [C#] für den CrystalDecisions.Shared-Namespace hinzu. (Sie haben diese Deklaration in <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic168.htm(v=VS.90)">Projekt-Setup</a> hinzugefügt.)</p></td>
</tr>
</tbody>
</table>
``` vb
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
```
``` csharp
ConnectionInfo connectionInfo = new ConnectionInfo();
```
- Legen Sie die Eigenschaften DatabaseName, UserID und Password der ConnectionInfo-Instanz fest.
<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>Aus Sicherheitsgründen ist es wichtig, dass Sie ein Konto mit eingeschränktem Datenbankzugriff verwenden. Weitere Informationen finden Sie unter <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic167.htm(v=VS.90)">Sicherheit: Erstellen eines Kontos mit eingeschränktem Datenbankzugriff</a>.</p></td>
</tr>
</tbody>
</table>
Ersetzen Sie das Beispielkennwort 1234 (siehe unten) in Ihrem Code durch Ihr eigenes Kennwort.
``` vb
myConnectionInfo.DatabaseName = "Northwind"
myConnectionInfo.UserID = "limitedPermissionAccount"
myConnectionInfo.Password = "
1234"
```
``` csharp
connectionInfo.DatabaseName = "Northwind";
connectionInfo.UserID = "limitedPermissionAccount";
connectionInfo.Password = "
1234";
```
- Geben Sie einen Aufruf der SetDBLogonForReport()-Methode ein, indem Sie die ConnectionInfo-Instanz und den Bericht "NorthwindCustomers" übergeben.
``` vb
SetDBLogonForReport(myConnectionInfo, northwindCustomersReport)
```
``` csharp
SetDBLogonForReport(connectionInfo, northwindCustomersReport);
```
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. Der Bericht sollte ordnungsgemäß geladen werden, da Sie Code zur Datenbankanmeldung hinzufügt haben.
So überprüfen Sie das Laden des Berichts "NorthwindCustomers"
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 erfolgreich angezeigt.
- Kehren Sie zu Visual Studio zurück, und klicken Sie auf Debuggen beenden, um den Debugmodus zu verlassen.
Der Bericht "NorthwindCustomers" wird erfolgreich angezeigt.