SSRS запускает SQL / DataSet условно - PullRequest
8 голосов
/ 17 июня 2010

У меня есть отчет SSRS, который содержит несколько вложенных отчетов. Пользователь имеет возможность выбрать / отменить выбор того, какие подотчеты он хочет создать, используя несколько логических параметров. Если подотчет отменен, он не отображается при установке свойства Visibility. Однако DataSet, связанный с невыбранным подотчетом, все еще выполняется, в результате чего время выполнения занимает больше времени, чем ожидалось.

Есть ли какой-нибудь способ запретить выполнение набора данных в подотчете или Табликс на основе выбора параметра?

Ответы [ 3 ]

8 голосов
/ 17 июня 2010

Включите условие AND :ParameterName = 'Y' в предложение where - если ваш параметр не равен 'Y', запрос все равно будет запущен, но он немедленно вернет 0 записей.

3 голосов
/ 17 июня 2010

Да. Просто проверьте параметры в каждом наборе данных и используйте конструкцию IF / ELSE для возврата фактических данных или фиктивных данных той же формы во избежание ошибок. Предполагая, что ваш параметр называется @ShowThisData, вы можете сделать это:

IF @ShowThisData = 0
    SELECT '' FIELD1, '' FIELD2, <etc... to create a dataset that matches the normal output.>
ELSE
    <whatever you normally do to get the data>
1 голос
/ 01 апреля 2014

Это работает, когда я пытаюсь сделать это в Oracle

select
case when :ShowThisData = 0
        then    (SELECT 'Y' 
                    from dual)
    ELSE    (select 'N'
              from dual)
end test1
from dual

, позволяя вам использовать несколько операторов в 1 запросе

...