Binden an ein in einen Bericht umgewandeltes InfoObject

NoteAnmerkung

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

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.
    NoteAnmerkung

    Wenn 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".
NoteAnmerkung

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.

  1. 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 &quot;Samples&quot;</a>.</p></td>
</tr>
</tbody>
</table>
  1. Fügen Sie Ihrem Projekt folgende Assembly-Verweise hinzu:

    • CrystalDecisions.Enterprise.Framework
    • CrystalDecisions.Enterprise.InfoStore
    • CrystalDecisions.Enterprise.Desktop.Report
  2. 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.
  1. 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";
    
  2. Deklarieren und instantiieren Sie die SessionMgr-Klasse.

    Dim mySessionMgr As SessionMgr = New SessionMgr()
    
    SessionMgr sessionMgr = new SessionMgr();
    
  3. 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");
    
  4. 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");
    
  5. Deklarieren und instantiieren Sie InfoStore mit dem abgerufenen InfoStore-Dienst.

    Dim myInfoStore As InfoStore = New InfoStore(myEnterpriseService)
    
    InfoStore infoStore = new InfoStore(enterpriseService);
    
  6. 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'";
    
  7. 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);
    
  8. 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];
```
  1. Deklarieren Sie eine Report-Instanz, und wandeln Sie InfoObject in Report um.

    Dim myReport As Report = CType(myInfoObject, Report)
    
    Report report = (Report)infoObject;
    
  2. Legen Sie für die EnterpriseLogon-Eigenschaft des CrystalReportViewer-Steuerelements die EnterpriseSession-Instanz fest.

    myCrystalReportViewer.EnterpriseLogon = myEnterpriseSession
    
    crystalReportViewer.EnterpriseLogon = enterpriseSession;
    
  3. Binden Sie die Report-Instanz an das CrystalReportViewer-Steuerelement.

    myCrystalReportViewer.ReportSource = myReport
    
    crystalReportViewer.ReportSource = report;
    

Siehe auch