If statement 如果公式返回错误或未执行公式的某一部分

If statement 如果公式返回错误或未执行公式的某一部分,if-statement,crystal-reports,crystal-reports-2008,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_TB

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

 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 feild中都包含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'
但它仍然给了我同样的错误


谢谢

我能够通过删除嵌套的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'

这似乎解决了这个问题。

这个公式的输出是什么{COR_TBL.COR_EXPECTED_DATE}+2+ToNumber({@FRM_NOTES})?它是一个日期。因此,公式取数据库中的日期,加上2加上在字段9的EXT_TBL中输入的任何内容,或者如果字段9不是“Y”,则为0,至少这是我希望发生的事情。我不确定是否要在日期上加2。。。它给你一个正确的日期吗?是的,它在日期上加了两天。据我所知,有一条记录只有一个文本字符串,尽管带有ACTION_FLAG_9是N,所以它应该用公式注册0,但它试图将文本字符串设置为一个它无法执行的数字