سؤال

ضمن واجهات برمجة تطبيقات Crystal Reports التي تأتي بشكل قياسي مع Visual Studios، هل هناك أي طريقة لاستخراج مسار ملف من تقرير موجود على خادم Business Objects Enterprise؟نقوم بإنشاء كائن ReportDocument ونقوم بتحميله باستخدام InfoStore وEnterpriseSession.نحن نبحث عن طريقة لاستخراج اسم مسار الملف برمجيًا حتى نتمكن من استخدامه للبيانات الوصفية في عملية الاستخراج.لقد حاولنا أيضًا استخدام خاصية FileName في فئة ReportDocument، ولكنها تقوم فقط بإرجاع معرّف CUID للتقرير.

إذا لم نتمكن من إيجاد طريقة للقيام بذلك، فسنفعل ذلك برمجيًا من خلال دالة عودية، لكنني بالتأكيد سأفعل ذلك يفضل للعثور على خاصية تم تخزينها.

هل كانت مفيدة؟

المحلول 2

لمعلوماتك، هذه هي الطريقة التي توصلنا بها إلى حل للمشكلة.

كل ما نستخدمه هو أ StringBuilder و InfoObject الاستعلام الذي يبدو كما يلي:

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";

بعد ذلك، نستدعي الطريقة العودية وننفذ الكود التالي:

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

أين rptInfo هو InfoObject و pathName هو StringBuilder.

نصائح أخرى

هذا ممكن فقط من Infostore.في استفسارك تريد تضمين SI_FILES في الرد.إذا كنت تفعل بالفعل حدد * من CI_INFOOBJECSS حيث SI_NAME= 'XYZ' ، ثم ستحدث بالفعل.

الجزء الصعب هو أن الخاصية SI_FILES في كيس خاصية ولها 2 أجزاء تهتم بها:

  1. si_file1
  2. si_path

    si_file1 هو اسم الملف الحقيقي كما تم تخزينه داخل نظام مستودع الملفات (FRS).SI_PATH هو مسار الملف داخل FRS.سيكون المسار مشابها FRS: // الإدخال / A_135 / 028/000/7303 / القسم الأول FRS: // الإدخال يشير إلى المسار كما هو موضح لFRS داخل CMC.ما تبقى من المسار هو مسار نظام ملفات منتظم إلى حيث يتم تخزين SI_FILE1.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top