kco*_*ode 14 custom-code reporting-services
如何在自定义代码中循环遍历数据集的行?
我有一个包含数据集的报告.我将数据集作为参数传递给自定义代码函数.那么呢?关于可用成员等的参考在哪里?
这是我到目前为止的虚拟示例代码:
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
Run Code Online (Sandbox Code Playgroud)
请注意:这将是一个非常简单的脚本(如果它可以工作),所以我不想进入自定义程序集等.
我想你已经在以下位置得到了答案:
我从上面的链接中掌握了两条重要信息:
首先,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
Run Code Online (Sandbox Code Playgroud)
你能做你想做的事吗?