1

我有 SQL Server 查询,它返回以下数据: 在此处输入图像描述

我想使用矩阵格式在 RDLC 2008 报告中显示数据,应该给出以下结果: 在此处输入图像描述

数量总计字段应返回 12(1 月)和 14(2 月)。我尝试了许多不同的方法,其中一种是在矩阵“数量”文本框中使用以下表达式:

=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")很多这样的功能,但我无法得到确切的结果。任何帮助将不胜感激..谢谢

4

2 回答 2

0

尝试将此添加到新列中作为测试:

    RunningValue(Avg(Fields!MemberCount.Value,"RowGroup_Category"),SUM,Nothing)

如果值正确,您应该能够在总计字段中设置此表达式时将 SUM 更改为 MAX。

您可以参考类似 code.TotalMemberCount 的总数,而不是使用 get 函数,但我认为在这种情况下您不需要此函数。

检查以下博客以了解模拟变量引用情况

于 2013-06-11T11:08:12.330 回答
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 的“报告数据”窗格中,右键单击“数据集”。)

将以下内容添加到 Report Properties -> Code 部分:

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"))

PS:确保您的代码也以与原始数据集相同的方式填充第二个数据集。

于 2017-08-16T07:57:12.460 回答