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

IF Formula returning error or not doing a section of the formula

我的报告中有一个公式 select 一个基于需求的字段:

 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'

当我 运行 报告时它工作正常,直到我尝试加载特定页面。当我尝试加载页面时,出现 'The string is non numeric' 错误。该公式在另一个公式中被调用:

{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'

但是还是报同样的错误

谢谢

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

这似乎解决了问题。