Crosstabs Crystal Reports Null值与零

时间:2015-04-21 19:27:04

标签: crystal-reports null crosstab zero

我正在创建一个交叉表报告,显示地鼠龟(if you must know what that is)监测站的调查历史记录。并非所有站点都针对给定的调查进行监控,有时当我们监控时,我们找不到任何站点,因此记录0是有效的结果。

在不使用电台的交叉表中,我希望它说“N / A”或其他等效电路,但当它为零时,我希望它保持为零。

我已经找到了很多如何将null更改为零的内容,但是当你想要保持零并以某种方式注意空值时,没有任何内容。

以下是交叉表的外观。您会看到2004年1月1日Station4中的0是“真实的”(意味着我们没有发现任何),但所有的N / A都是我们没有使用该站的时候。

                          Survey Dates
|          | 1/1/2000 | 1/1/2002 | 1/1/2004 | 1/1/2006 |
|----------|----------|----------|----------|----------|
| Station1 | 9        | 5        | N/A      | N/A      |
| Station2 | 5        | 7        | 2        | 6        |
| Station3 | N/A      | N/A      | 6        | 9        |
| Station4 | 10       | 9        | 0        | 11       |

这是以1/1/2000调查的Oracle表格为例

| SurveyID | StationID | Number |
|----------|-----------|--------|
| 1        | 1         | 9      |
| 1        | 2         | 5      |
| 1        | 4         | 6      |

那么,基本上我如何保留零并在CR交叉表中的空值中加入一些文本?

谢谢!

1 个答案:

答案 0 :(得分:0)

因为CR没有区分交叉表中的空值和实际零,所以可以尝试用占位符替换实际的零值,这样就可以区分出来。请注意,此解决方案仅在您尝试显示值而不进行任何聚合计算时才有效。

首先,创建一个用占位符值替换零的公式。在这种情况下,我使用-1,因为该数字永远不会出现在数据库中。

    //{@Survey Num}
    local numbervar totalSurvey;
    totalSurvey:={Table.ActiveBurrows} + {Table.InactiveBurrows};
    if totalSurvey=0 then -1 else totalSurvey

使用此公式创建交叉表。现在您需要设置一个显示字符串,以便一切正确显示。右键单击其中一个交叉表单元格→点击"格式字段" →选择" Common"选项卡→然后创建一个"显示字符串"式。那个公式应该是这样的:

if currentfieldvalue=-1 then "0" else if currentfieldvalue=0 then "N/A" else totext(currentfieldvalue,0,'')

现在,您基本上只是在占位符的顶部打印实际值。