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

Passing an int array into an SSRS chart?

我有一个充满数字的逗号分隔字符串,并创建了一个 vb 函数将其转换为整数数组,但这不起作用。它期望什么数据类型,我怎样才能做一些与我想做的类似的事情?

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

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

End Function

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

就是说,如果您确实需要(例如,您必须绘制一个多值报告参数),您可以使用我一直在使用的技巧使其工作:

  1. 在数组中创建一个包含整数索引的虚拟数据集
  2. 为 x 值创建一个数组
  3. 为 y 值创建一个数组
  4. 在图表中将它们联系起来

对于第 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)。接下来,向图表添加一个系列。打开系列属性,对于"Value field",使用下面的表达式

=<NumArrayY>(Fields!ID.Value)

其中 是您的数值数组(例如,您的自定义代码的输出)。然后,对于 "Category field",对 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.

不过,这份报告仍然有效。