SSRS - Как изменить запрос на основе значения параметра при подключении IBM DB2 (AS400) в качестве источника данных - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть некоторые значения параметров в SSRS, и я заполняю набор данных на основе этих параметров. Однако у меня есть один параметр с именем Employee с именем сотрудника и значениями кода. Первое значение этого Employee - «ALL», так что когдапользователь нажимает ВСЕ, отображаются все данные о сотруднике.

Я хочу изменить свой запрос на основе значения сотрудника, т. Е. Если это «ВСЕ», это другое условие «где», а для кодов сотрудников другое условие «где»

Я проверил похожие вопросыв stackoverflow они говорят, что используют условие If, но я подключаюсь к AS400, и если условие не принимается в конструкторе запросов.

Проблема заключается в этой части моего запроса, SLSMCD - это код продавца.Этот запрос работает для ВСЕХ условий (т.е. для всех сотрудников)

                      (SLSMCD IN
                         (SELECT        WEMEMCD
                           FROM            VHTEMPL VHTEMPL_1
                           WHERE        (WEMEMCD = ?) OR
                                                     (WEMTLCD = ?) OR
                                                     (WEMGLCD = ?) OR
                                                     (WEMBHCD = ?) OR
                                                     (WEMTCMCD = ?) OR
                                                     (WEMGCMCD = ?) OR
                                                     (WEMBCMCD = ?) OR
                                                     (WEMHOTLCD = ?) OR
                                                     (WEMHOGLCD = ?) OR
                                                     (WEMHHODCD = ?) OR
                                                     (WEMGHODCD = ?)))

Теперь для отдельного сотрудника запрос должен быть

 (SLSMCD IN
 (SELECT WEMEMCD FROM VHTEMPL VHTEMPL_1 WHERE (WEMEMCD = ?)

Я пытался использовать условия И и ИЛИ, группирующие вещи с ().Например,

(SLSMCD IN (SELECT WEMEMCD FROM            VHTEMPL VHTEMPL_1
 WHERE        (WEMEMCD = ? and ? <> 'ALL')

Но SSRS автоматически удаляет () и делает его похожим на (WEMEMCD =?) И (? <> 'ALL)

1 Ответ

0 голосов
/ 19 февраля 2019

Я решил эту проблему, используя выражения в моем наборе данных

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

=IIF(Parameters!PRSalesManCode.Value <> 
"ALL",Parameters!PRSalesManCode.Value,Parameters!PRSalesMan.Value)

Здесь параметры! PRSalesMan.Valueэто значение, которое я отправляю со страницы ASPX, и оно хранится как скрытый параметр

Параметры! PRSalesManCode.Value - выбранное значение в раскрывающемся списке отчета

ТАК я сравниваю со ВСЕМ и передаюзначение основано на условии

Примечание: я заметил, что в AS400 нет концепции if, поэтому мы не можем использовать ее в нашем запросе при формировании набора данных в ssrs (не полностью уверен)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...