Генерация 1 отчета на основе нескольких выполнений хранимой процедуры (передача разных параметров одной процедуре) - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть отчет SSRS, который принимает параметр и выполняет хранимую процедуру для создания отчета с ним. параметр - это значения из таблицы, которую я выбрал пользователем из выпадающего списка, скажем, 15 опций, которые передаются в качестве параметров для каждого выполнения.

AAAA
AAAB
AAAC
...etc

есть ли способ настроить отчет так, чтобы он выполнить с каждым параметром и сгенерировать отчет?

проблема в том, что теперь пользователь должен вручную выбрать 1-й параметр, сгенерировать отчет и затем экспортировать результат файла в excel.

что я хочу сделать для пользователя способ выбрать несколько параметров и экспортировать только один файл, содержащий все из них (хранимая процедура не может принимать больше параметров, поскольку способ кодирования зависит от получения только одного параметра)

поэтому для составления отчета необходимо запланировать несколько выполнений хранимой процедуры, а затем экспортировать ее. Это возможно? (как примечание, количество параметров будет часто меняться, поэтому мне нужно дать возможность выбора кратных из списка, который заполняется из запроса к базе данных)

и, чтобы уточнить, хранимая процедура должна принять только один параметр, это не должно быть решено путем отправки нескольких параметров для работы с использованием разделителя или подобного, так как параметр, полученный SP, используется в вычислениях в зависимости от порядка (чтобы не детализировать go с SP, просто нужно принять один параметр за выполнение)

1 Ответ

2 голосов
/ 28 апреля 2020

Поскольку у вас уже есть отчет, который обрабатывает одну опцию, вы можете легко сделать это, используя подотчеты. Не беспокойтесь о длине этого ответа, это на самом деле довольно просто.

Я бы сделал копию существующего отчета, чтобы быть в безопасности ... .

Изменить в существующем отчете можно принять только одно значение параметра, если его еще нет. Сохраните этот отчет, это будет ваш подотчет, скажем, он называется mySubReport

Далее создайте новый пустой отчет.

Добавьте набор данных (называемый, скажем, dsParameterList), который даст вам список опций, из которых вы хотите выбрать пользователя (я думаю, это будет то же самое, что и ваш текущий отчет?). Например, если это был список компаний, он может выглядеть примерно так: SELECT CompanyID, CompanyName FROM myCompanyTable

Затем добавьте параметр с именем say @options, убедитесь, что он задан как многозначный, и установите доступные значения для использования. запрос и укажите это на dsParameterList. Установите поля значения и метки, как требуется.

Теперь, например, создайте еще один набор данных с именем dsLoop. Этот набор данных будет содержать список выбранных значений параметров. Используя пример компании из предыдущего, запрос к набору данных может выглядеть примерно так. SELECT CompanyID, CompanyName FROM myCompanyTable WHERE CompanyID IN (@options)

Затем добавьте таблицу в свой отчет и удалите столбцы, чтобы осталась только 1. Установите для свойства набора данных таблицы / табликса значение dsLoop. Это означает, что мы будем генерировать 1 строку для каждого выбранного значения параметра.

В строке сведений щелкните правой кнопкой мыши в оставшемся текстовом поле и выберите «Вставить подотчет». Теперь щелкните правой кнопкой мыши заполнитель подотчета и установите свойства, указывающие на отчет, который мы сохранили ранее (mySubReport в этом примере).

Пока все еще в свойствах вложенного отчета, перейдите на вкладку параметров и добавьте новый введите параметр в левом столбце и установите значение в правом столбце равным dsLoop, которое вы хотите передать в подотчет. В нашем примере компании это, вероятно, будет [CompanyID]

Вот и все. Вы запускаете отчет и выбираете из списка параметров, когда вы нажимаете «Просмотреть отчет», запускается запрос dsLoop и выдается список только этих выбранных компаний, тело отчета генерируется со строкой для каждой строки в наборе данных dsLoop. который, в свою очередь, запускает подотчет с другим параметром, переданным в каждый раз.

Опционально Вы можете щелкнуть правой кнопкой мыши группу строк под главным окном дизайна и установить для свойства 'pagename' значение , В примере компании это может быть =Fields!CompanyName.Value. Когда отчет экспортируется в Excel, каждому листу в рабочей книге будет присвоено имя компании

...