我有SQL Server查询,它返回以下数据:
我想使用矩阵格式在RDLC 2008报告中显示数据,这应该给出以下结果:
数量的总数应该在1月份返回12并且2月14日。 我尝试过许多不同的方法,其中一种方法是在矩阵'Qty'文本框中使用以下表达式:
=IIF(InScope("RowGroup_Category")
,IIF(InScope("RowGroup_SubCategory")
,Fields!Qty.Value
,Code.GetAverageMemberCount(Cint(Avg(Fields!Qty.Value)))
)
,Code.TotalMemberCount
)
上述功能写在报告属性代码中,如下所示:
Public Dim TotalMemberCount As Integer = 0
Function GetAverageMemberCount(ByVal AverageMemberCount As Integer) As Integer
TotalMemberCount = TotalMemberCount + AverageMemberCount
Return AverageMemberCount
End Function
我也尝试了RunningValue(Fields!Qty.Value,Sum,"RowGroup_Category")
和许多此类功能,但我无法得到确切的结果。任何帮助将不胜感激..谢谢
答案 0 :(得分:0)
尝试将其添加到新列中作为测试:
RunningValue(Avg(Fields!MemberCount.Value,"RowGroup_Category"),SUM,Nothing)
如果值正确,您应该能够在总计字段中设置此表达式时将SUM更改为MAX。
您可以参考类似code.TotalMemberCount的总数,而不是使用get函数 但在这种情况下,我认为你不需要这个功能。
检查the following blog是否有类似的变量引用情况
答案 1 :(得分:0)
我能找到的解决这个问题的唯一解决方案是计算不同数据集中的平均值,并使用查找函数从那里填充总计。
在您的情况下,我会在原始数据集中添加一个关键列:
select Category + '|' + Month as key, Category, SubCategory, Month, Qty, Amt
from YourTable
使用以下方法创建另一个数据集:
select Category + '|' + Month as key, Category, Month, avg(Qty)
from YourTable
group by Category, Month
将第二个结果作为DataSet2添加到报表中。 (在“报表数据”窗格中的Visual Studio中,右键单击“DataSet”。)
添加到报告属性 - >代码部分如下:
Function SumArray(varArray as array) as Decimal
Dim retVal As Decimal = 0
For Each item As Decimal In varArray
retVal = retVal + item
Next
Return retVal
End Function
最后在报告中使用以下表达式来表示总数:
=code.SumArray(Lookupset(Fields!key.Value, Fields!key.Value, Fields!qty.Value, "DataSet2"))
P.S。:确保您的代码也以与原始代码相同的方式填充第二个数据集。