我想你的答案是:
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
你能做你想做的事吗?