IF公式返回错误或不执行公式的一部分

时间:2017-06-07 14:42:31

标签: if-statement crystal-reports crystal-reports-2008

我的报告中有一个公式可根据要求选择字段:

 if not isnull({EXT_TBL.EXT_KEY_TYPE}) then

(if {EXT_TBL.EXT_KEY_TYPE} = "SO" and  {EXT_TBL.EXT_ACTION_FLAG_9} = "Y"
then {EXT_TBL.EXT_TEXT})

else '0'

当我运行报告时,它可以正常工作,直到我尝试加载特定页面。当我尝试加载页面时,我收到错误“字符串是非数字的”。公式在另一个公式中调用:

{COR_TBL.COR_EXPECTED_DATE} + 2 + ToNumber({@FRM_NOTES})

我在服务器上运行了查询:

SELECT * FROM EXT_TBL WHERE EXT_KEY_TYPE = "SO" AND EXT_ACTION_FLAG_9 = "Y";

这给我留下了两行数据。我已将其缩小到导致问题的特定条目,但在数据库中,行在字段操作标志9中有N而不是Y,所以它不应该在我的报告中抛出错误。

操作字段9仅在两个记录中标记,这两个记录在EXT_TEXT字段中都包含7,因此我不知道为什么会出现错误。

我还尝试了一个嵌套的if语句:

if not isnull({EXT_TBL.EXT_KEY_TYPE}) then

(if {EXT_TBL.EXT_KEY_TYPE} = "SO" then (if {EXT_TBL.EXT_ACTION_FLAG_9} = "Y"
then {EXT_TBL.EXT_TEXT}))

else '0'

但它仍然给了我同样的错误。

谢谢

1 个答案:

答案 0 :(得分:0)

我能够通过删除嵌套的if语句并将所有条件放在原始语句中来解决问题:

if not isnull({EXT_TBL.EXT_KEY_TYPE}) AND {EXT_TBL.EXT_KEY_TYPE} = "SO" 
AND {EXT_TBL.EXT_ACTION_FLAG_9} = "Y"

THEN {EXT_TBL.EXT_TXT} ELSE '0'

这似乎解决了这个问题。