SSRS表达式中嵌套IIF语句部署时报InvalidSyntax语法错误如何解决
SSRS 表达式语法错误排查
你的表达式主要存在3类语法问题:
- 多余的无效左括号:每个IIF函数的判断条件部分都额外多套了一层无意义的左括号,例如开头的
=iif((First(Fields!ShowCut.Value, "SalesDataSet") = "No",中,iif(后多出来的(属于无效字符,直接触发语法解析错误。 - 括号数量不匹配:整个表达式的左括号总数比右括号多3个,SSRS解析时找不到对应的闭合符号,就会提示逗号无效的语法报错。
- 嵌套层级混乱:第一层IIF的执行分支末尾多了多余的逗号,没有和后续的else分支、闭合括号对应。
修正后的完整表达式
=Iif(First(Fields!ShowCut.Value, "SalesDataSet") = "No", Iif(Fields!CutSize1.Value = "C1" or Fields!CutSize1.Value = "C2", Space(0), Iif(Fields!SalesUnitTxt.Value<>Fields!PriceUnitId.Value, FormatNumberCulture(CStr(Fields!PriceQty.Value), Parameters!AX_RenderingCulture.Value) + vbCRLF + FormatNumberCulture(CStr(Fields!Qty.Value), Parameters!AX_RenderingCulture.Value), FormatNumberCulture(CStr(Fields!PriceQty.Value), Parameters!AX_RenderingCulture.Value) ) ), Iif(Fields!CutSize.Value = "C2", FormatNumberCulture(CStr(Fields!PriceQty.Value),Parameters!AX_RenderingCulture.Value), Iif(Fields!SalesUnitTxt.Value<>Fields!PriceUnitId.Value, FormatNumberCulture(CStr(Fields!PriceQty.Value), Parameters!AX_RenderingCulture.Value) + vbCRLF + FormatNumberCulture(CStr(Fields!Qty.Value), Parameters!AX_RenderingCulture.Value), FormatNumberCulture(CStr(Fields!PriceQty.Value), Parameters!AX_RenderingCulture.Value) ) ) )
简易排查技巧
后续写嵌套IIF时可以遵循逐层写的规则:每写一个Iif(就先把三个参数的占位、对应的闭合括号补全,再往参数里填内容,写完后数左右括号的数量必须完全一致,就能避免大部分语法错误。
内容的提问来源于stack exchange,提问作者Skyfred Walker
相关产品推荐
相关产品推荐

