16

如何在自定义代码中遍历数据集的行?
我有一个包含数据集的报告。我将数据集作为参数传递给自定义代码函数。但那又如何呢?关于可用成员等的参考在哪里?
到目前为止,这是我的虚拟示例代码:

Public Function ShowParameterValues(ByVal ds as DataSet) as object()
    Dim codes() As Object
    Array.Resize(codes,dc.???.Count)
    codes(0)=ds??(field???)(row??)
    return codes
End Function

请注意:这将是一个非常简单的脚本(如果它可以工作的话),所以我不想进入自定义程序集等。

4

1 回答 1

3

我想你的答案是:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a7d59224-0ee5-491e-883b-2e5fcb3edeab/iterate-through-rows-of-dataset-in-reports-custom-code?forum= sql报告服务

我可以从上面的链接中掌握两条重要的信息:

首先,Reporting Services 中的数据集与 ADO.Net 数据集的对象类型不同。报表数据集是由 SSRS 运行时管理的内部对象(它实际上是从 DataReader 对象派生的),而不是包含数据表等的 XML 结构,不能传递到报表的自定义代码中。

其次,发布了一个解决方案,说明如何通过将数据集“转换”为多值参数(或者如果需要多个字段,将其转换为多个多值参数)来遍历报表自定义代码中的数据集行:

多值报告参数必须具有以下特征:

隐藏 = True,允许多个值 = True

可用值选项卡:选择所需的数据集。选择可搜索的 id 作为值 id,选择要公开的字段作为标签字段。

默认值选项卡:从查询中获取值。选择与可用值选项卡中选择的相同的数据集。值字段与您为值 id 选择的字段相同。

将参数设置为从不刷新(否则它将从另一个参数的每次迭代中加载数据)。

现在,想法是让这个参数“可搜索”。从此时起,您将数据集公开为多值参数中的数组。

现在在自定义代码中插入以下代码:

function GetDataSetLabelFromValue( id as integer) as String
dim i as integer
i = 0
for i = 1 to Report.Parameters!YourParameter.Count()
if Report.Parameters!YourParameter.Value(i) = id then
    GetDataSetLabelFromValue = Report.YourParameter!ReportParameter1.Label(i)
    Exit For
End if
next i
End Function

你能做你想做的事吗?

于 2016-08-17T14:39:12.477 回答