请求协助将Crystal Report表达式转换为等效SSRS公式
问题:Crystal Report公式转SSRS公式出错求助
我的Crystal Report公式运行完全正常,但目前使用的SSRS公式返回错误结果(前两项内容为空),无法排查问题原因,请求协助将以下Crystal Report表达式转换为等效的正确SSRS公式。
Crystal Report原公式
if IsNull({OrderDtl.XPartNum}) then {OrderDtl.PartNum} else ( if IsNull({OrderHed.Calc_CustPartOpts}) then {OrderDtl.PartNum} else ( select {OrderHed.Calc_CustPartOpts} case "M": {OrderDtl.XPartNum} case "S": {OrderDtl.PartNum} case "O": {OrderDtl.XPartNum} case "N": {OrderDtl.PartNum} default: {OrderDtl.PartNum} ) )
当前错误的SSRS公式
=iif(Fields!XPartNum.Value="", "", iif(isnothing(Fields!Calc_CustPartOpts.Value), "", (Switch(UCase(Fields!Calc_CustPartOpts.Value) = "M", Fields!PartNum.Value, UCase(Fields!Calc_CustPartOpts.Value) = "S", Fields!XPartNum.Value, UCase(Fields!Calc_CustPartOpts.Value) = "O", "", UCase(Fields!Calc_CustPartOpts.Value) = "N", "", True, "" ) ) ) )
正确的SSRS公式
=IIF(IsNothing(Fields!XPartNum.Value), Fields!PartNum.Value, IIF(IsNothing(Fields!Calc_CustPartOpts.Value), Fields!PartNum.Value, Switch( UCase(Fields!Calc_CustPartOpts.Value) = "M", Fields!XPartNum.Value, UCase(Fields!Calc_CustPartOpts.Value) = "S", Fields!PartNum.Value, UCase(Fields!Calc_CustPartOpts.Value) = "O", Fields!XPartNum.Value, UCase(Fields!Calc_CustPartOpts.Value) = "N", Fields!PartNum.Value, True, Fields!PartNum.Value ) ) )
错误说明
- 原SSRS错误判断
XPartNum为空时返回空值,而原逻辑是XPartNum为空时返回PartNum,且应该用IsNothing判断数据库NULL值,而非直接对比空字符串 Calc_CustPartOpts为空时,原逻辑返回PartNum,但错误公式返回空值- Switch分支的对应值完全颠倒,且错误返回空值,默认分支也未按原逻辑返回
PartNum
内容的提问来源于stack exchange,提问作者Raymark
相关产品推荐
相关产品推荐

