You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Crystal Report If Then语句编写报错,求技术协助

Crystal Report 公式错误排查与修正

原公式的问题主要出在字段引用格式和函数使用上,直接修正后的公式如下:

If {CLA_UNIFORM_PAYMENT_ADVICE_REP.SUPPLIER_TYPE} = "SUB" Then
    {CLA_UNIFORM_PAYMENT_ADVICE_REP.INVOICE_NO}
Else
    IfNull(Substr({CLA_UNIFORM_PAYMENT_ADVICE_REP.INVOICE_NO}, 3), {CLA_UNIFORM_PAYMENT_ADVICE_REP.PAYMENT_REFERENCE})

关键修改点说明:

  • 字段引用必须用大括号{}包裹,Crystal Report不识别双引号包裹的表名+字段名字符串,这是最核心的报错原因。
  • Crystal Report中没有nvl函数,替代的空值处理函数是IfNull,作用和NVL一致:如果第一个参数为空,返回第二个参数。
  • 保持原逻辑不变,仅修正语法适配Crystal的公式规则。

如果还是报错,检查以下几点:

  • 确认SUPPLIER_TYPE、INVOICE_NO、PAYMENT_REFERENCE这三个字段确实存在于CLA_UNIFORM_PAYMENT_ADVICE_REP数据源中,拼写无错误。
  • 确认INVOICE_NO和PAYMENT_REFERENCE字段类型一致(都是字符串类型),否则需要用CStr()做类型转换,比如把数字转成字符串:CStr({字段名})

内容的提问来源于stack exchange,提问作者Jannette

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:13:17