我的应用程序使用SSRS为员工生成工资单。 Payslip报告包含一个包含5列的Tablix。在5个中,有一个名为“单位”的列,另一个名为“发票值”。
该报告有多个行分组级别,但此问题唯一重要的一个是薪资单号码行分组“RG_SlipNum”。每个“RG_SlipNum”RowGroup后都有一个分页符。
当用户想要打印薪资单时,他们可以选择提供最多5个参数来过滤结果集以进行打印。
员工可以根据交付的单位数量*基于单位的费率(基于单位)或发票价值(基于发票)的百分比来支付(过度简化,但希望您得到我的漂移)。
如果员工是基于单位的,我希望单位列显示,并隐藏“发票金额”列。如果它们是基于发票的,我希望显示两列。
我的数据集有一个位字段,指示是否根据上述逻辑显示或隐藏列。对于当前rowGroup中的每个基础行,它将为1或0。我试图在“发票价值”列的列可见性表达式中使用First(,)函数。但是,每当我尝试使用RowGroup名称将第一个函数的范围限制为当前的Payslip Rowgroup时,我都会收到以下错误。
“Tablix'X'的隐藏表达式有一个对聚合函数无效的作用域参数。scope参数必须设置为一个字符串常量,该常量等于包含组的名称,包含数据区域的名称或数据集的名称。“
所以,我的问题
您能否将RowGroup名称定义为First()函数中的Scope参数?
如果没有,如果没有完全重新使用我的数据集/ RDL来完成此任务,最好的方法是什么。(使用SSRS2008)
答案 0 :(得分:1)
为什么它总是在发布论坛问题之后,你想出来(或一些解决方法)?
如果有人看到这个,我仍然会喜欢一些(更好的)答案,但是我在tablix中设置了一个单元格,用于确定是否显示该列的位字段的值。然后我更改了我的Column Visibility表达式以检查单元格值(使用ReportItems!textboxname.Value)并且它正在工作。当我滚动薪资单时,列可见性会相应变化。