(把它放在这里因为我无法找到,因为答案还没有在StackExchange上,并且让我疯了。如果你有更好的答案,我很乐意接受它。)< / p>
我遇到了一个问题,我们的应用程序需要在尝试打印报告之前检查Crystal Report中是否存在UFL,以便为Ufl设置数据库以及(将来)警告用户当我们开始弃用UFL时。我需要的是一种确定报告公式是否称为UFL的方法。
答案 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多个字段的报告,检查仍然需要不到半秒的时间,但文本搜索永远不应该被认为是高性能的,所以在特别大量的报告中使用它时要小心!