在 Visual Studio 标配的 Crystal Reports API 中,是否有任何方法可以从 Business Objects Enterprise 服务器上现有的报表中提取文件路径?我们创建一个 ReportDocument 对象并使用 InfoStore 和 EnterpriseSession 加载它。我们正在寻找一种以编程方式提取文件路径名的方法,以便我们可以在提取过程中将其用于元数据。另外,我们尝试在 ReportDocument 类中使用 FileName 属性,但它只返回报告 CUID。

如果我们找不到办法做到这一点,我们将通过递归函数以编程方式执行此操作,但我肯定会 更喜欢 找到存储了此信息的属性。

有帮助吗?

解决方案 2

仅供参考,这就是我们提出问题解决方案的方式。

我们使用的只是一个 StringBuilderInfoObject 查询如下所示:

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 是一个 InfoObjectpathName 是一个 StringBuilder.

其他提示

这是可能的,只是从infostore。在您的查询中,您希望在回复中包含SI_FILE。如果您已经从ci_infoobjects做了 select *,其中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://输入是指为其配置的路径CMC内的FRS。路径的其余部分是存储Si_file1的常规文件系统路径。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top