在公式中获取Crystal Reports公式名称

时间:2013-12-09 20:09:46

标签: crystal-reports

是否可以在公式本身(在Crystal 8.5中)使用Crystal Reports公式的名称?

例如,假设我有以下公式:

@MOISTURE
@PROTEIN
@ACIDITY
@PROPERTYX
@PROPERTYY
@PROPERTYZ

并且每个公式的逻辑是相同的。公式之间的唯一区别是 他们最终访问的字段的名称。例如,@ MOISTURE看起来像这样:

if ... then {VIEW_SPECS.SOURCE_1_MOISTURE}
if ... then {VIEW_SPECS.SOURCE_2_MOISTURE}
if ... then {VIEW_SPECS.SOURCE_3_MOISTURE}
if ... then {VIEW_SPECS.AVERAGE_MOISTURE}

和@PROTEIN看起来像这样:

if ... then {VIEW_SPECS.SOURCE_1_PROTEIN}
if ... then {VIEW_SPECS.SOURCE_2_PROTEIN}
if ... then {VIEW_SPECS.SOURCE_3_PROTEIN}
if ... then {VIEW_SPECS.AVERAGE_PROTEIN}

不是为每个公式输入所有这些重复的东西,我可以在公式本身中得到公式的名称,这样每个公式看起来都像这样:

if ... then {VIEW_SPECS.SOURCE_1_{$this}}
if ... then {VIEW_SPECS.SOURCE_2_{$this}}
if ... then {VIEW_SPECS.SOURCE_3_{$this}}
if ... then {VIEW_SPECS.AVERAGE_{$this}}

我希望能够编写一次公式,并将其粘贴到每个公式的公式编辑器中,而不必修改每个公式。

1 个答案:

答案 0 :(得分:1)

据我所知,在水晶中,公式无法引用自己。水晶总会给你一个错误。您可以做的是在公式中存储值,然后在另一个公式中引用它们。所以你可以创建Moisture1,Moisture2等,然后引用它们。它有点相同,但在我看来,从维护的角度来看,写作更少一点,也更好。如果任何来源发生变化,您将不得不通过所有公式并更改它,而如果您将值存储在公式中,则只需更改一个公式。

实施例

@ Moisture1公式将包含以下代码:

{VIEW_SPECS.SOURCE_1_MOISTURE}

检查条件的其他公式(if / else)看起来像这样:

if......then {@Moisture1}
if......then {@Moisture2}

......等等。