Я новичок в SSRS, и мне интересно, как я могу выполнять отчет SSRS несколько раз для разных наборов параметров, когда результаты будут в одном документе.

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

RM | Магазин | Наемный рабочий

RM1 | Магазин 1 | Сотрудник 1
RM1 | Магазин 2 | Сотрудник 2
RM1 | Магазин 2 | Сотрудник 3
RM1 | Магазин 2 | Сотрудник 4
RM2 | Магазин X | Сотрудник 5
RM2 | Магазин X | Сотрудник 6
RM2 | Магазин Y | Сотрудник 7
RM2 | Магазин Y | Сотрудник 8

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

0
jscherbs 15 Сен 2018 в 01:05

2 ответа

Лучший ответ

Добро пожаловать, StackOverflow!

Хотите, вы хотите сделать довольно просто. У вас уже есть отчет, в котором указан один сотрудник, мы можем использовать его как подотчет.

Предположим, ваш текущий отчет по отдельным сотрудникам называется SingleEmpReport и принимает один параметр empID. Оставим пока это все, что нам нужно ...

Теперь вам нужно создать новый отчет, который будет действовать как основной отчет и будет проходить через ваших сотрудников.

Так..

  • Создайте новый отчет, скажем, ManagerReport
  • Создайте новый параметр с именем pManager (мы вернемся к этому позже, чтобы улучшить его, но пока достаточно просто создать параметр)
  • Создайте новый набор данных, скажем, dsEmployees. Задайте для запроса набора данных что-то вроде

    ВЫБРАТЬ DISTINCT EmployeeID ИЗ myControlTable ГДЕ ManagerID = @pManager ЗАКАЗАТЬ ПО EmployeeName

Примечание: имена параметров чувствительны к регистру. Он должен быть написан точно так же, как параметр вашего отчета, и перед ним должен стоять символ @

  • Затем добавьте tablix в тело отчета, List будет работать, так как нам нужен только один столбец и одна строка, но таблица также подойдет.

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

  • Установите для свойства набора данных списка / табликса значение dsEmployees
  • В единственной «ячейке» в списке щелкните правой кнопкой мыши и вставьте вложенный отчет.

  • Щелкните правой кнопкой мыши заполнитель подотчета и задайте для свойства подотчета значение SingleEmpReport или то, что называется исходным отчетом по отдельным сотрудникам.

  • На вкладке параметров добавьте новый параметр, нажмите левый раскрывающийся список и выберите параметр empID (это то, что вы определили в исходном отчете, поэтому выберите правильный параметр из исходного отчета).

  • В правом раскрывающемся списке выберите EmployeeID. Это столбец из созданного нами набора данных, содержащий список сотрудников для выбранного менеджера. Поскольку список / табликс привязан к набору данных dsEmployees, мы можем выбрать любое поле из него для передачи в наш подотчет.

Я делаю это по памяти, но думаю, что в основном все. Запустите ManagerReport, введите идентификатор менеджера (RM1 и т. Д.), И вы должны получить подотчет для каждого сотрудника.

Если вы хотите добавить разрывы страниц между каждым сотрудником, выберите список / табликс и посмотрите на панель групп строк в нижней части экрана. Вы, вероятно, увидите группу «детали». Щелкните его правой кнопкой мыши, выберите «Свойства группы», затем щелкните разрывы страниц и выберите «между каждой группой».

Вы также можете сделать это немного лучше, предоставив раскрывающийся список менеджеров.

Для этого просто добавьте новый набор данных, скажем, dsManagers, задайте для запроса что-то вроде

`SELECT DISTINCT RM 
    FROM myControlTable 
    ORDER BY RM`

Теперь щелкните правой кнопкой мыши параметр отчета (pManager) и установите для него доступные значения для запроса, затем выберите набор данных. Установите значение, которое вы хотите использовать в запросе набора данных dsEmployees, а метку - то, что вы хотите, чтобы ваш пользователь видел.

Теперь у вас должен появиться раскрывающийся список менеджеров.

Надеюсь, я не пропустил ничего значительного (здесь уже за полночь), и вы сможете выполнить эти шаги.

Удачи!

0
Alan Schofield 14 Сен 2018 в 23:29

Если ваш отчет состоит только из таблицы / матрицы, вы можете добавить дополнительную группу строк, которая группируется по сотрудникам, используя разрыв страницы между группами.

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

0
Wolfgang Kais 15 Сен 2018 в 01:05