Reporting Services - 确定Matrix中显示的列数

时间:2009-01-30 11:11:15

标签: reporting-services

是否可以确定Reporting Services报表中显示的列数,并在单独文本框的“可见性”表达式中使用它?

我面对以下情况:

我的客户端有一个Reporting Services 2005报告,其中包含一个矩阵,根据所选参数显示可变数量的列。 有时,一些用户生成了包含大量列的报告。这会导致服务器在随后尝试导出到Excel时出错,因为Excel 97-2003格式限制为256列。

因此,当矩阵中显示超过256列时,我希望在报告顶部显示一条消息,告知用户此限制并建议导出为CSV的解决方法(如果他们拥有它,则在Excel 2007中查看) )。

3 个答案:

答案 0 :(得分:4)

您是否可以对数据集进行计数以获得列数?

Count(Fields!FieldUsedAsColumnGrouping.Value,"DatasetName")

不确定您的数据和矩阵是如何设置的,我做了类似的事情,我必须知道列的数量,以便我可以绘制适当的边界线。但我认为你应该能够依靠数据集或分组来获得你想要的东西。 (如果需要,我可以在星期一粘贴一些代码。)

答案 1 :(得分:1)

这可以做到,我刚刚创建了一个测试来证明我的理论;这是基础知识。

我在数据集上创建了一个计算列,其值为1。我将此列添加到矩阵中的最低粒度列分组(层次结构中的最低值)。然后我在矩阵中添加了另一列,并使用数据集中的计算列在列上执行了RunningValue。 RunningValue可以采用Scope参数,在这种情况下,范围是层次结构中最低级别分组的名称。这给了我一个等于矩阵中列数的值。

可能有更好的方法可以做到这一点,我会为你调查,但这是我头脑中的第一个想法。

答案 2 :(得分:1)

围绕这个(大量列)的工作是在这么多列之后“包裹”矩阵。您可以通过将矩阵放在表或另一个矩阵中,外部表/矩阵通过检查数据源中的“指针”或分组编号来控制换行。为此,您还需要增加此指针,该指针控制每n行的分组,其中n是您希望在矩阵报告中显示的最大列数。

转换为矩阵的数据源示例: [组指针],[矩阵列尺寸],[矩阵行尺寸],[测量/数据]

每次[Group Pointer]打破每个,比如20 [Matrix Column Dimensions]时,外表/矩阵将包裹内部矩阵。