Obtention du chemin du fichier à partir de Business Objects Enterprise par programme
-
12-12-2019 - |
Question
Dans les API Crystal Reports fournies en standard avec Visual Studios, existe-t-il un moyen d'extraire un chemin de fichier à partir d'un rapport existant sur un serveur Business Objects Enterprise ?Nous créons un objet ReportDocument et le chargeons à l'aide d'un InfoStore et d'une EnterpriseSession.Nous recherchons un moyen d'extraire par programme le nom du chemin du fichier afin de pouvoir l'utiliser pour les métadonnées dans notre processus d'extraction.Nous avons également essayé d'utiliser la propriété FileName dans la classe ReportDocument, mais elle renvoie simplement un CUID de rapport.
Si nous ne parvenons pas à trouver un moyen de le faire, nous le ferons simplement par programmation via une fonction récursive, mais je le ferais certainement préférer pour trouver une propriété dans laquelle cela est stocké.
La solution 2
Pour information, c'est ainsi que nous avons trouvé une solution au problème.
Tout ce que nous utilisons est un StringBuilder
Et un InfoObject
requête qui ressemble à ceci :
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";
Ensuite, nous appelons notre méthode récursive et exécutons le code suivant :
if (rptInfo.ParentID != 0)
{
pathName.Insert(0, "\\" + rptInfo.Parent.ToString());
getPath(rptInfo.Parent, ref pathName);
}
Où rptInfo
est un InfoObject
et pathName
est un StringBuilder
.
Autres conseils
Ceci est possible juste de l'infostore.Dans votre requête, vous voulez inclure les Si_files dans la réponse.Si vous faites déjà un Sélectionnez * à partir de cI_infoObjects où si_name= 'xyz' alors vous aurez déjà revenir.
La partie délicate est que la propriété Si_files est dans un sac de propriété et compte 2 parties que vous vous souciez de:
- Si_file1
- si_path
Si_file1 est le nom de fichier véritable tel qu'il a été stocké dans le système de référentiel de fichiers (FRS).Le SI_PATH est le chemin du fichier dans les FRS.Le chemin sera similaire à frs: // entrée / A_135 / 028/00/7303 / la première section frs: // entrée fait référence au chemin comme configuré pour leFrs à l'intérieur du CMC.Le reste du chemin est un chemin d'accès au système de fichiers régulier sur lequel le SI_File1 est stocké.