Frage

Gibt es innerhalb der Crystal Reports-APIs, die standardmäßig mit Visual Studios geliefert werden, eine Möglichkeit, einen Dateipfad aus einem Bericht zu extrahieren, der auf einem Business Objects Enterprise-Server vorhanden ist?Wir erstellen ein ReportDocument-Objekt und laden es über einen InfoStore und eine EnterpriseSession.Wir suchen nach einer Möglichkeit, den Dateipfadnamen programmgesteuert zu extrahieren, damit wir ihn für Metadaten in unserem Extraktionsprozess verwenden können.Außerdem haben wir versucht, die Eigenschaft FileName in der ReportDocument Klasse zu verwenden, aber sie gibt nur eine Berichts-CUID zurück.

Wenn wir keinen Weg finden, dies zu tun, werden wir dies einfach programmgesteuert über eine rekursive Funktion tun, aber ich würde es auf jeden Fall tun bevorzugen um eine Eigenschaft zu finden, in der dies gespeichert ist.

War es hilfreich?

Lösung 2

Zu Ihrer Information, so haben wir eine Lösung für das Problem gefunden.

Alles, was wir verwenden, ist ein StringBuilder und ein InfoObject abfrage, die wie folgt aussieht:

string sReportQueryString = 
    "SELECT SI_ID, SI_CUID, SI_NAME, SI_PATH, SI_PARENT_CUID " + 
    "FROM CI_INFOOBJECTS " + 
    "WHERE SI_PROGID='CrystalEnterprise.Report' AND SI_INSTANCE = 0";

Danach rufen wir unsere rekursive Methode auf und führen den folgenden Code aus:

if (rptInfo.ParentID != 0)
{
    pathName.Insert(0, "\\" + rptInfo.Parent.ToString());
    getPath(rptInfo.Parent, ref pathName);
}

Wo rptInfo ist ein InfoObject und pathName ist ein StringBuilder.

Andere Tipps

Dies ist nur aus dem InfoStore möglich.In Ihrer Abfrage möchten Sie die SI_FILEs in der Antwort aufnehmen.Wenn Sie bereits ein select * von ci_infoobjects aus Select * tun, wo SI_NAME= 'XYZ' dann bereits wiederkommt.

Der knifflige Teil besteht darin, dass die SI_FILES-Eigenschaft in einer Immobiliebeutel ist und 2 Teile hat, von denen Sie sich interessieren:

    .
  1. si_file1
  2. si_path

    si_file1 ist der echte Dateiname, wie er innerhalb des Datei-Repositorysystems (FRS) gespeichert wurde.Der SI_PATH ist der Pfad der Datei innerhalb der FRS.Der Pfad ist ähnlich zu FRS: // input / a_135/028 / 000/7303 / den ersten Abschnitt FRS: // Eingang bezieht sich auf den für das konfigurierten PfadFrs in der cmc.Der Rest des Pfads ist ein regulärer Filesystem-Pfad, an dem der Si_File1 gespeichert ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top