Ответ 1
Я думаю, вы получили свой ответ:
Были две важные части информации, которые я смог понять из приведенной выше ссылки:
Во-первых, набор данных в службах Reporting Services - это не тот же тип объекта, что и набор данных ADO.Net. Набор данных отчета - это внутренний объект, управляемый средой SSRS (она фактически получена из объекта DataReader), а не структура XML, содержащая данные и т.д., И не может быть передана в пользовательский код отчета.
Во-вторых, было опубликовано решение о том, как можно перебирать строки из набора данных в пользовательском коде отчета, "преобразовывая" набор данных в многозначный параметр (или если требуется несколько полей, преобразуя его в несколько многозначных параметров)
Многозначный параметр отчета должен иметь следующие характеристики:
Hidden = True, Разрешить несколько значений = True
Доступные значения: выберите нужный набор данных. Выберите идентификатор для поиска как идентификатор значения и поле, которое вы хотите открыть как поле метки.
Вкладка "Значения по умолчанию": получить значения из запроса. Выберите тот же набор данных, который выбран в доступной вкладке "Значения". Поле значений - то же, что вы выбрали для идентификатора значения.
Установите параметр, чтобы никогда не обновлять (или он будет загружать данные из каждой итерации другого параметра).
Теперь идея состоит в том, чтобы сделать этот параметр "доступным для поиска". С этого момента вы выставили набор данных в виде массива в многозначном параметре.
Теперь в пользовательский код вставьте следующий код:
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
Вы могли делать то, что хотели?