我在SSRS中设置了一个非常尴尬的设置,包括自定义分组选项(即办公室,卖家,买家等)。例如,用户可以按年度分组项目,然后按月分组。报告的结果是:
Gr1. | Gr2.
2015 | April
2015 | August
2015 | February
2015 | January
and so on...
因此,这两列都是按字母顺序排列的,这对于所有自定义分组选项都很有效,但几个月 - 它们应该有自己的排序逻辑。我怎么能实现呢?
答案 0 :(得分:1)
您应该尝试以其本机类型返回数据库中的所有信息。而不是将月份名称返回为“1月”,“2月”等,最好返回20150101
,20150201
例如(或任何默认日期格式适用于您的环境)
然后,您可以更改报告中类型的格式。例如,设置要返回的单元格
=MonthName(Month(Fields!myDate.Value),False)
返回任意日期的月份名称。然后SSRS会知道何时订购如何以正确的顺序排列日期。
<强> ALTERNATIVE 强>
假设您不想编辑返回数据的方式,您可以在报告后面的代码中使用Select语句手动提供月份的订单。
假设数据集
Month Val
---------- ---
January 1
February 2
March 3
按月排序时,返回以下内容
相反,请在报告中插入以下代码(右键单击报告区域,选择“报告属性”,然后选择“代码”)
public function MonthNumber(MonthName AS String) AS Integer
Dim MonthNum AS Integer = 0
Select Case MonthName
Case "January"
MonthNum = 1
Case "February"
MonthNum = 2
Case "March"
MonthNum = 3
End Select
return MonthNum
end function
然后将组属性设置为
=Code.MonthNumber(Fields!Month.Value)
给出以下结果
这是因为在订购集合时,它不是仅仅查看报告的名称,而是通过代码传递名称,这有效地告诉报告每个月分配哪个号码。然后按此值而不是月份名称对其进行排序。
希望这对你有用。如果您有任何进一步的问题,请告诉我。