【发布时间】:2019-06-21 18:19:21
【问题描述】:
我有一个 SQL Server Reporting Services 报告,该报告有一个包含大量字段的表,然后是一个我想要显示总重量的文本框。现在,总重量由一个巨大的表达式决定:
=Sum(Round(Code.ConvertWgt(Switch(Parameters!OrderLength.Value =
"T",Fields!TotalTheorWeight.Value
,Parameters!OrderLength.Value = "C",Fields!TotalCutWeight.Value
,Parameters!OrderLength.Value = "P",Fields!TotalPayWeight.Value
,Parameters!OrderLength.Value =
"OD",Switch(Fields!Calculate_Weight_Using_ID.Value =
"T",Fields!TotalTheorWeight.Value
,Fields!Calculate_Weight_Using_ID.Value = "C",Fields!TotalCutWeight.Value
,Fields!Calculate_Weight_Using_ID.Value = "P",Fields!TotalPayWeight.Value
)
),Switch(Parameters!WeightUnit.Value = "orderdflt"
,Fields!Default_Weight.Value,True,Parameters!WeightUnit.Value))
,CInt(IIF(Parameters!WeightPrecision.Value="uomdefault",Fields!Weight_Precision.Value,Parameters!WeightPrecision.Value))))
但是,我在尝试预览报告时看到以下错误:
文本框“TotalWeight”的值表达式使用没有范围的聚合表达式。除非报表只包含一个数据集,否则在数据区域之外使用的所有聚合都需要范围。
所以我尝试通过将其更改为来修复它:
=Sum(IiF(Round(Code.ConvertWgt(Switch(Parameters!OrderLength.Value =
"T",Fields!TotalTheorWeight.Value
,Parameters!OrderLength.Value = "C",Fields!TotalCutWeight.Value
,Parameters!OrderLength.Value = "P",Fields!TotalPayWeight.Value
,Parameters!OrderLength.Value = "OD",Switch(Fields!Calculate_Weight_Using_ID.Value = "T",Fields!TotalTheorWeight.Value
,Fields!Calculate_Weight_Using_ID.Value = "C",Fields!TotalCutWeight.Value
,Fields!Calculate_Weight_Using_ID.Value = "P",Fields!TotalPayWeight.Value
)
),Switch(Parameters!WeightUnit.Value = "orderdflt"
,Fields!Default_Weight.Value,True,Parameters!WeightUnit.Value))
,CInt(IIF(Parameters!WeightPrecision.Value="uomdefault",Fields!Weight_Precision.Value,Parameters!WeightPrecision.Value)))), "Order")
Order 是我要使用的数据集的名称。但是,然后我看到了这个错误:
文本运行“TotalWeight.Paragraphs[0].TextRuns[0]”的值表达式包含错误:[BC30516] 重载解析失败,因为没有可访问的“IIf”接受此数量的参数。
我该如何解决这个问题?谢谢!
【问题讨论】:
标签: sql sql-server reporting-services