Programmgesteuertes Abrufen des Dateipfads von Business Objects Enterprise
-
12-12-2019 - |
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.
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:
- .
- si_file1
- 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.