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.
Anmerkung |
|---|
Auf dieser Seite werden Funktionen beschrieben, die nicht in Crystal Reports für Visual Studio, jedoch in einer der aktualisierten Versionen verfügbar sind. Weitere Informationen zu Crystal Reports für Visual Studio finden Sie unter Was ist Crystal Reports für Visual Studio? Weitere Informationen zu aktualisierten Versionen finden Sie unter Aktualisierungsoptionen. |
Objektmodell
In diesem Berichtbindungsszenario wird InfoObject verwendet (siehe Berichtbindung mit InfoObject-Objektmodell (BOE)).
Ort des Berichts
Auf einem Server in Crystal Reports Server oder BusinessObjects Enterprise gespeichert.
Beschreibung
Das InfoObject-Objektmodell ist im Lieferumfang von Crystal Reports Server oder BusinessObjects Enterprise enthalten. Bei diesem Modell werden alle im System enthaltenen Enterprise-Elemente (Berichte, Anwender, Gruppen, Server, Servergruppen, Ordner) als Informationsobjekte behandelt, die die programmgesteuerte Interaktion unterstützen. Alle Informationsobjekte im Objektmodell werden durch entsprechende, gleichnamige Klassen dargestellt. Diese Klassen erben von InfoObject.
Zum Binden von Berichten mit diesem Objektmodell rufen Sie einen als InfoObject-Instanz eingeschlossenen Bericht aus Crystal Reports Server oder BusinessObjects Enterprise ab. Um eine Bindung an diese InfoObject-Instanz vorzunehmen, weisen Sie der InfoObject-Instanz die ReportSource-Eigenschaft des CrystalReportViewer-Steuerelements zu.
Pro
- Hilfreich bei der zeitgesteuerten Verarbeitung von Berichten, die zu bestimmten Zeiten ausgeführt werden sollen, wobei bestimmte Parameter an FTP-, SMTP-Ziele bzw. an Datenträger oder Drucker ausgegeben werden sollen.
Contra
- Die Berichtanzeige erfolgt nicht so schnell wie bei Verwendung des RAS-Servers bzw. Page Servers.
- Wenn Sie den Bericht zur Laufzeit programmgesteuert ändern möchten, verwenden Sie für die Interaktion mit dem RAS-Server eines der Bindungsszenarien unter Berichtbindung mit ReportClientDocument-Objektmodell (RAS).
- Falls Sie Wert auf maximale Geschwindigkeit legen und den Bericht lediglich anzeigen möchten, empfiehlt sich zur Berichtbindung das Berichtbindungsszenario Binden an ReportSource (Crystal Reports Server oder BusinessObjects Enterprise 11), um auf den Page Server zuzugreifen.
So binden Sie an einen Bericht, der als InfoObject eingeschlossen und in einen Bericht umgewandelt wurde
- Crystal Reports Server oder BusinessObjects Enterprise muss installiert und funktionsbereit sein.
- Das SDK von Crystal Reports Server oder BusinessObjects Enterprise (einschließlich .NET-Assemblys) muss auf dem Entwicklungscomputer installiert sein.
AnmerkungWenn Sie Crystal Reports Server oder BusinessObjects Enterprise auf Ihrem Entwicklungscomputer installiert haben, ist das SDK in dieser Installation enthalten.
- Suchen und notieren Sie den Namen eines Crystal Reports Servers oder BusinessObjects Enterprise-Servers. In diesem Beispiel lautet der Servername "BOE01".
Anmerkung |
|---|
Diese Prozedur funktioniert nur bei Projekten, die in Projekt-Setup erstellt wurden. Projekt-Setup enthält spezifische Namespaceverweise und Codekonfigurationen, die für diese Prozedur erforderlich sind. Die Prozedur kann ohne diese Konfiguration nicht ausgeführt werden. Führen Sie deshalb vor Beginn dieser Arbeitsschritte die Schritte unter Projekt-Setup aus. |
- Verwenden Sie den Publishing-Assistenten, um den Bericht "Chart.rpt" auf dem Crystal Reports Server oder BusinessObjects Enterprise-Server zu veröffentlichen.
<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>Wie Sie den Publishing-Assistenten verwenden, erfahren Sie in der Anwenderdokumentation zu Crystal Reports Server oder BusinessObjects Enterprise.</p>
<p>Informationen zu Musterberichten finden Sie unter <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic159.htm(v=VS.90)">Verzeichnis "Samples"</a>.</p></td>
</tr>
</tbody>
</table>
Fügen Sie Ihrem Projekt folgende Assembly-Verweise hinzu:
- CrystalDecisions.Enterprise.Framework
- CrystalDecisions.Enterprise.InfoStore
- CrystalDecisions.Enterprise.Desktop.Report
Fügen Sie oben auf der CodeBehind-Seite eine Anweisung "Imports" [Visual Basic] oder "using" [C#] für den CrystalDecisions.Enterprise-Namespace und den CrystalDecisions.Enterprise.Desktop-Namespace hinzu.
``` vb
Imports CrystalDecisions.Enterprise
Imports CrystalDecisions.Enterprise.Desktop
```
``` csharp
using CrystalDecisions.Enterprise;
using CrystalDecisions.Enterprise.Desktop;
```
Jetzt können Sie Code hinzufügen, durch den eine Bindung an eine InfoObject-Instanz erfolgt, die einen Bericht aus Crystal Reports Server oder BusinessObjects Enterprise enthält.
Deklarieren Sie innerhalb der (im Projekt-Setup erstellten) ConfigureCrystalReports()-Methode eine serverName-Zeichenfolge, und setzen Sie sie auf den Namen des Crystal Reports Servers oder des BusinessObjects Enterprise-Servers.
Dim serverName As String = "BOE01"string serverName = "BOE01";Deklarieren und instantiieren Sie die SessionMgr-Klasse.
Dim mySessionMgr As SessionMgr = New SessionMgr()SessionMgr sessionMgr = new SessionMgr();Leiten Sie den Anwendernamen (Administrator), das Kennwort (leer), die serverName-Variable sowie den Anmeldetyp (secEnterprise) an die Logon-Methode der SessionMgr-Instanz weiter, und rufen Sie sie als eine Instanz von EnterpriseSession ab.
Dim myEnterpriseSession As EnterpriseSession = mySessionMgr.Logon( _ "Administrator", "", serverName, "secEnterprise")EnterpriseSession enterpriseSession = sessionMgr.Logon( "Administrator", "", serverName, "secEnterprise");Rufen Sie den InfoStore-Dienst (als EnterpriseService) aus der GetService-Methode von EnterpriseSession ab.
Dim myEnterpriseService As EnterpriseService = _ myEnterpriseSession.GetService("InfoStore")EnterpriseService enterpriseService = enterpriseSession.GetService("InfoStore");Deklarieren und instantiieren Sie InfoStore mit dem abgerufenen InfoStore-Dienst.
Dim myInfoStore As InfoStore = New InfoStore(myEnterpriseService)InfoStore infoStore = new InfoStore(enterpriseService);Geben Sie unten die Abfragezeichenfolge ein, um Crystal Reports Server oder BusinessObjects Enterprise nach dem Bericht abzufragen.
Dim queryString As String = "Select SI_ID, SI_NAME, SI_PARENTID From CI_INFOOBJECTS " _ & "Where SI_PROGID='CrystalEnterprise.Report' " _ & "And SI_NAME Like 'Chart'"string queryString = "Select SI_ID, SI_NAME, SI_PARENTID From CI_INFOOBJECTS " + "Where SI_PROGID='CrystalEnterprise.Report' " + "And SI_NAME Like 'Chart'";Rufen Sie die InfoObjects-Indexklasse ab, die das Abfrageergebnis enthält, indem Sie die Abfragezeichenfolge an die Query-Methode von InfoStore übergeben.
Dim myInfoObjects As InfoObjects = myInfoStore.Query(queryString)InfoObjects infoObjects = infoStore.Query(queryString);Rufen Sie das InfoObject aus der ersten Spalte der InfoObjects-Indexklasse 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>Die InfoObjects-Indexklasse ist 1-basiert, nicht 0-basiert.</p></td>
</tr>
</tbody>
</table>
``` vb
Dim myInfoObject As InfoObject = myInfoObjects(1)
```
``` csharp
InfoObject infoObject = infoObjects[1];
```
Deklarieren Sie eine Report-Instanz, und wandeln Sie InfoObject in Report um.
Dim myReport As Report = CType(myInfoObject, Report)Report report = (Report)infoObject;Legen Sie für die EnterpriseLogon-Eigenschaft des CrystalReportViewer-Steuerelements die EnterpriseSession-Instanz fest.
myCrystalReportViewer.EnterpriseLogon = myEnterpriseSessioncrystalReportViewer.EnterpriseLogon = enterpriseSession;Binden Sie die Report-Instanz an das CrystalReportViewer-Steuerelement.
myCrystalReportViewer.ReportSource = myReportcrystalReportViewer.ReportSource = report;