如何确定Crystal Report中是否存在自定义Ufl?

时间:2014-10-16 15:25:02

标签: c# crystal-reports crystal-reports-xi

(把它放在这里因为我无法找到,因为答案还没有在StackExchange上,并且让我疯了。如果你有更好的答案,我很乐意接受它。)< / p>

我遇到了一个问题,我们的应用程序需要在尝试打印报告之前检查Crystal Report中是否存在UFL,以便为Ufl设置数据库以及(将来)警告用户当我们开始弃用UFL时。我需要的是一种确定报告公式是否称为UFL的方法。

1 个答案:

答案 0 :(得分:0)

答案在于,虽然直接访问所使用的论坛不在报告文档对象中,但公式的原始文本可在ReportDocument.DataDefinition.FormulaFields中找到。从那里可以执行文本搜索以查看是否出现Ufl名称。我构建了一个继承自ReportDocument的ReportDocumentWrapper.cs类,并添加了以下方法:

public bool IsCustomUflPresent 
{ 
  get
  {
    return this.DataDefinition.FormulaFields.Cast().Any(x => x.Text.Contains("CustomUfl("));
  }
}

虽然对于100多个字段的报告,检查仍然需要不到半秒的时间,但文本搜索永远不应该被认为是高性能的,所以在特别大量的报告中使用它时要小心!