将int数组传递到SSRS图表中?

时间:2016-10-04 16:35:15

标签: vb.net reporting-services ssrs-2012

我有一个逗号分隔的字符串,其中包含数字,并创建了一个vb函数,将其转换为整数数组,但这不起作用。它期望的数据类型是什么,我该如何做与我正在做的事情类似的事情?

Function StringArrayToIntArray(ByVal s As String) As Integer()

Dim ints = Array.ConvertAll(s.Split(","c), Addressof Convert.ToInt32)
return ints

End Function

1 个答案:

答案 0 :(得分:1)

如果您仍在寻找答案:SSRS图表不会接受开箱即用的阵列。它们用于数据集,因此,如果可能的话,我建议创建一个提供所需数据的数据集,而不是尝试使其适用于数组。

那就是说,如果你真的需要(例如你必须绘制一个多值报告参数),你可以使用我一直在使用的技巧:

  1. 在数组
  2. 中创建一个带整数索引的虚拟数据集
  3. 为x值创建数组
  4. 为y值创建数组
  5. 将它们挂在图表中
  6. 对于第1步,创建您喜欢的新数据集。例如,如果您有SQL数据源,则可以使用

    SELECT        row_number() OVER (ORDER BY ID) - 1 AS ID
    FROM            [SomeTable]
    

    或者,如果您有嵌入式XML数据集,则可以使用

    <Query>
    <XmlData>
    <?xml version="1.0"?>
    <IDs>
    <ID>0</ID>
    <ID>1</ID>
    <ID>2</ID>
    </IDs>
    </XmlData>
    </Query>
    

    对于步骤2和3,您可以使用拆分功能或自定义代码。

    第4步是有趣的地方。首先,确保使用虚拟ID数据集作为图表类别(Example screenshot)。接下来,在图表中添加一个系列。打开系列属性,对于&#34;值字段&#34;,使用以下表达式

    =<NumArrayY>(Fields!ID.Value)
    

    其中&lt; NumArrayY&gt;是您的数值数组(例如自定义代码的输出)。然后,对于&#34;类别字段&#34;,对x值使用类似的表达式

    =<NumArrayX>(Fields!ID.Value)
    

    这可以做你想要的,但对于在同一份报告上工作的人来说,这并不是特别漂亮或显而易见。请注意,如果ID数据集包含太多的数组行,则会出现运行时错误:

    [rsRuntimeErrorInExpression] The X expression for the chart ‘Chart1’ contains an error: Index was outside the bounds of the array.
    

    但这份报告仍然有效。