【问题标题】:Passing an int array into an SSRS chart?将 int 数组传递到 SSRS 图表中?
【发布时间】:2016-10-04 16:35:15
【问题描述】:

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

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

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

End Function

【问题讨论】:

  • 它说它期待一个字符串,并且代码看起来很好(你可以将“作为整数”添加到暗整数,但它不是编译所必需的),那么你不认为是什么工作吗?
  • @soohoonigan 代码工作正常,但是当我尝试将整数数组传递到 SSRS 以创建图表时,它告诉我“'chart' 中使用的 Y 表达式返回的数据类型无效.
  • 您能向我们展示您的数据集、图表和 Y 轴表达式吗?看起来好像您正在尝试返回一个数组对象作为您的 Y 轴,它期望每个数据集行有一个值。

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


【解决方案1】:

如果您仍在寻找答案: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)。接下来,将一个系列添加到图表中。打开系列属性,对于“值字段”,使用以下表达式

=<NumArrayY>(Fields!ID.Value)

其中 是您的数值数组(例如您的自定义代码的输出)。然后,对于“类别字段”,对 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.

不过,此报告仍然有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多