Я считаю, что самый простой способ сделать это с помощью подотчетов.
Сделайте резервную копию вашего текущего отчета перед началом ...
Теперь отредактируйте текущий отчет, чтобы он принимал только одного сотрудника, так как вы знаете, что он работает нормально. Сохраните отчет и назовите его как subEmpReport
Далее создайте новый пустой отчет.
Теперь создайте набор данных, который просто содержит список выбранных уникальных сотрудников. Я предполагаю, что это поле идентификатора с именем employeeID
для простоты, а параметр вашего сотрудника называется empID
.
Таким образом, запрос для вашего набора данных (для этого примера называется dsEmpList
) будет выглядеть примерно так:
SELECT DISTINCT employeeID
FROM myEmployeeTable
WHERE employeeID = @empID
Это создаст для вас параметр, установите этот параметр так же, как в исходном отчете, чтобы он отображал список сотрудников и имел многозначные значения.
Теперь создайте таблицу в своем дизайне отчета и установите для ее набора данных значение dsEmpList
(набор данных, который мы только что создали).
Удалите все строки и столбцы из таблицы, кроме одной, так что у вас останется только одна «ячейка». Разверните эту ячейку, чтобы она соответствовала ширине вашего отчета.
Теперь щелкните правой кнопкой мыши на ячейке и сделайте Insert => Sub report
.
Щелкните правой кнопкой мыши этот новый заполнитель подотчета и выберите свойства.
Установите подотчет на subEmpReport
, который мы создали в начале.
Перейдите на вкладку параметров в том же диалоговом окне и задайте для имени параметра имя параметра в вашем подотчете . Установите значение из раскрывающегося списка, которое должно быть просто employeeID
(это имя поля из dsEmpList
, созданного ранее.
Помимо небольшого форматирования, которое должно быть.
Когда отчет запускается, запускается «основной» отчет, создавая строку в таблице для каждой записи сотрудника в dsEmpList
, каждая строка будет содержать ваш подчиненный отчет, а в каждый вложенный отчет будет передан employeeID.