Crystal Report多条件IF语句布尔错误问题求助
项目费率条件判断语句修复方案
需求
- 项目EXMHA:服务日期在2023年1月1日前费率为110.00,之后为127.00
- 项目EXBEHAVLINK:服务日期在2023年1月1日前费率为87.00,之后为95.00
原代码问题
原代码错误使用or连接两个独立IF语句,触发布尔逻辑错误;单独使用单条IF语句会将规则应用到所有项目,不符合需求。
原错误代码:
If {billing_pay_adj_history.date_of_service} <= date(2022,12,31) and {billing_tx_history.program_X_RRG_code} ='EXMHA' then '110.00' else '127.00' or If {billing_pay_adj_history.date_of_service} <= date(2022,12,31) and {billing_tx_history.program_X_RRG_code} ='EXBEHAVLINK' then '87.00' else '95.00'
正确整合语句
嵌套版逻辑(结构清晰)
If {billing_tx_history.program_X_RRG_code} = 'EXMHA' then If {billing_pay_adj_history.date_of_service} <= date(2022,12,31) then 110.00 else 127.00 Else If {billing_tx_history.program_X_RRG_code} = 'EXBEHAVLINK' then If {billing_pay_adj_history.date_of_service} <= date(2022,12,31) then 87.00 else 95.00 Else 0
扁平化多条件版
If {billing_tx_history.program_X_RRG_code} = 'EXMHA' and {billing_pay_adj_history.date_of_service} <= date(2022,12,31) then 110.00 Else If {billing_tx_history.program_X_RRG_code} = 'EXMHA' then 127.00 Else If {billing_tx_history.program_X_RRG_code} = 'EXBEHAVLINK' and {billing_pay_adj_history.date_of_service} <= date(2022,12,31) then 87.00 Else If {billing_tx_history.program_X_RRG_code} = 'EXBEHAVLINK' then 95.00 Else 0
关键调整点
- 沿用原正确语句的分支逻辑,先匹配项目代码,再按日期区分费率
- 移除字符串引号,保持数值类型与原有正确语句一致
- 保留
Else 0处理未匹配的其他项目,对齐原有逻辑
内容的提问来源于stack exchange,提问作者Tina
相关产品推荐
相关产品推荐

