Пользовательский код в отчете Reporting Services

посмотрев, где условие, вы можете использовать составной индекс для таблицы cdu_sessions

create index idx1 on cdu_sessions(teacher_id, sort, enabled);

и ищите возможность присоединиться и выбрать таблицу cdu_sessions_lessons

create index idx2 on cdu_sessions_lessons(session_id, lesson_id);
6
задан Ryan Eastabrook 6 November 2008 в 22:08
поделиться

7 ответов

При использовании Reporting Services SQL 2008 затем, можно взглянуть на эту страницу, которая представляет понятие использования пользовательских блоков.

При использовании Reporting Services SQL 2005 затем, эта ссылка является той, которую Вы хотите.

Это - главным образом тривиальная вещь, просто скомпилируйте свой код в библиотеку классов и следуйте инструкциям, предоставленным, чтобы позволить Вашему отчету сослаться на него.

2
ответ дан 16 December 2019 в 21:47
поделиться

Вы возвращаете объект массива (массив строк) в текстовое поле. Вместо этого попытайтесь возвратить простую строку. Это должно работать. Если все еще требуется возвратить список массива, необходимо в основном связать его с управлением списком в RDL. Можно определенно сделать это с расширениями набора данных. Однако я не уверен, существует ли какой-либо другой простой способ. Проверьте, что proprties списка управляют и видят, позволяет ли он Вам непосредственно связывать со списком массива.

2
ответ дан 16 December 2019 в 21:47
поделиться

Получить доступ к Вашим участникам/функциям реализовало в пользовательском коде отчета о SSRS, необходимо установить модификатор доступа на "Общественность":

Public Function GetPeriods() As String
...

см. статью Writing Custom Code in SQL Server Reporting Services

1
ответ дан 16 December 2019 в 21:47
поделиться

Можно создать ту же хранимую процедуру на SQL Server и загрузить значения параметров из той процедуры.

1
ответ дан 16 December 2019 в 21:47
поделиться

Я проверил Ваш код. Единственной вещью это неправильно, являются Ваши функциональные возвраты String(). Когда я изменил Вашу сигнатуру метода для возврата Array, это хорошо работало в моем отчете.

Измените подпись на Function GetPeriods() As Array

1
ответ дан 16 December 2019 в 21:47
поделиться

Все, что я видел, требует, чтобы параметры и их соответствующие настройки были частью RDL.

Однако если Вы идете в "hardcode" значения, Вы могли бы создать набор данных только для отчета, возможно, в XML, или если он должен программно управляться, сделать это в веб-сервисе.

0
ответ дан 16 December 2019 в 21:47
поделиться

Я пытался сделать то же самое, установить простой список значений параметров из кода отчета. Ни одна из ссылок в любом из этих ответов не показывает, как это сделать, и после небольшого поиска я не думаю, что это вообще возможно. Да, можно получить значения из запроса к базе данных, из веб-службы или из настраиваемой сборки, но каждый из них создает много накладных расходов по сравнению с получением списка из простого вызова функции, например = Code.GetValues ​​() , где функция использует цикл For для создания значений.

msvcyc правильно указывает, что параметр ожидает строковое значение, но функция возвращает массив. Я изменил тип возвращаемого значения на Array, как это было предложено prashant sable, но список выбора по-прежнему неактивен, он не работает. И Coldice прав, говоря, что модификатор доступа должен быть Public.

При копании я нашел статью Джеймса Ковача 2005 года, в которой указывалось, почему это невозможно. У класса Parameters есть метод get, но нет метода set. В обозревателе объектов VS 2008 для SSRS 2008 имя объекта изменилось, но он по-прежнему не содержит метода набора (см. Microsoft.ReportingServices.Interfaces.IParameter.Name или .Value).

Мой текущий способ обхода - просто запрограммируйте список значений, но если ваш список значений должен быть динамическим, тогда ваш единственный выбор - это запросы к базе данных, веб-службы или пользовательские сборки. Я думаю, что самый простой обходной путь из этих трех - получить значения из движка базы данных, как предлагает oleksiy.t, если вы можете написать запрос для возврата нужного списка значений. Ваш список целых чисел, или мой список временных интервалов, было бы легко написать оба запроса. В противном случае вам придется использовать один из двух других обходных путей.

1
ответ дан 16 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: