选择公式,排除具有空值的列的行

时间:2013-06-12 16:07:20

标签: crystal-reports crystal-reports-2008 crystal-reports-xi

我有一个奇怪的问题。我有一份报告CR。在选择公式中,我对两个字段进行了测试。测试很简单:{field_City} = 'Paris' OR {field_Country} = 'France'

这是我表格中的数据样本:

|---------------|---------------|---------------|
|   ID_Record   |    Country    |      City     |
|---------------|---------------|---------------|
|        1      |      null     |      Paris    |
|---------------|---------------|---------------|
|        2      |      France   |      null     |
|---------------|---------------|---------------|
|        3      |     France    |      Paris    |
|---------------|---------------|---------------|

Selection的结果应该是3条记录,但是它排除了其中一列中有空值的第2行。然后我改变了这样的选择公式以考虑空值:({field_City} = 'Paris' AND (isnull({field_Country}) OR not(isnull({field_Country})))) OR ({field_Country} = 'France' AND (isnull({field_City}) OR not(isnull({field_City}))))但我仍然只获得最后一条记录!为了确保我自己的代码是正确的,我通过CR'显示sql查询'中的选项生成了sql查询,然后我添加了一个WHERE子句,其中我写了相同的条件,我已经放入了选择公式, ......它给了我3条记录!不幸的是我无法使用sql查询,我必须找出为什么公式排除其中一列中具有空值的记录:(我希望你能帮助我。非常感谢!

这是解决方案:((isnull({field_Country}) AND {field_City} = 'Paris') OR (isnull({field_City}) AND {field_Country} = 'France') OR (not(isnull({field_Country})) AND {field_City} = 'Paris') OR (not(isnull({field_City})) AND {field_Country} = 'France')),非常感谢Craig!

1 个答案:

答案 0 :(得分:1)

您需要首先测试空值

( Not(Isnull({field_Country})) AND {field_Country}='France' )
OR
( Isnull({field_Country}) AND {field_City}='Paris' )