Многозначный параметр SSRS для передачи 'ALL' - PullRequest
0 голосов
/ 07 июня 2018

У меня есть отчет SSRS, который имеет 10 параметров, и пользователь хочет видеть значения «ВСЕ» из параметров по умолчанию.Каждый из параметров содержит список из 100 значений, передача всех из них в качестве значения по умолчанию влияет на производительность.Как добавить одно значение «Все», которое отчет интерпретирует как означающее все параметры?Я новичок в SSRS, поэтому, пожалуйста, простите меня.Я испробовал несколько вариантов, но не смог заставить отчет работать.

Отчет управляется sp и имеет соответствующие наборы данных для управления параметрами.У sp есть 2 ctes, которые извлекают данные из разных источников, и, наконец, он имеет объединение между 2 ctes, чтобы показать все данные, доступные из обоих источников.

В предложении where я использую функцию split, которая разбивает, когдаЯ передаю несколько источников.Я явно упоминаю «ВСЕ» для параметров.Вот пример того, что я сделал до сих пор

    Create procedure dbo.Testreport
    @BusinessUnit varhar(max),
    @State varchar(max),
    @Class varchar(max),
    @StartDate date,
    @EndDate date,
    @Source varchar(10)
    AS begin
    ;with ABC
    As
     ( Select CustomerName, CustID, Address, 
      StateName,Business,ClassCode,EffectiveDate,ExpirationDate,Source='FDM'
       From table A),

    XYZ AS
        ( Select CustomerName, CustID, Address, 
      StateName,Business,ClassCode,EffectiveDate,ExpirationDate,Source='MAS'
       From table B),
      ReportingData As
      ( Select * from ABC
       UNION
       Select * from XYZ) select * from ReportingData 
       where Source in(select * from dbo.fnsplit(@Source))
       and @BusinessUnit = 'ALL' or Business=@BusinessUnit
       and @State ='ALL' or State=@State
       and @Class='ALL'or ClassCode=@Class
       and EffectiveDate>=@StartDate and ExpirationDate<=@EndDate
       END

В построителе отчетов 2012 года для набора данных параметров я делаю что-то вроде набора данных BusinessUnit

    ;with BU
     As (Select BUID,BusinessUnit from table A
           union
       Select BUID, BusinessUnit from table B)
       select '-1' as BUID, 'ALL' as BusinessUnit
        UNION
       select '1' as BUID, BusinessUnit From BU

Затем вПараметр @BuisnessUnit, я использую «ВСЕ», чтобы установить вкладку «Значение по умолчанию».Когда я запускаю отчет в построителе отчетов, на панели предварительного просмотра я не вижу никаких данных.Что может быть не так с дизайном?

Любой указатель был бы очень признателен!

Спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

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

Вместо этого:

   where Source in(select * from dbo.fnsplit(@Source))
   and @BusinessUnit = 'ALL' or Business=@BusinessUnit
   and @State ='ALL' or State=@State
   and @Class='ALL'or ClassCode=@Class
   and EffectiveDate>=@StartDate and ExpirationDate<=@EndDate

Вам нужно это:

   where Source in(select * from dbo.fnsplit(@Source))
   and (@BusinessUnit = 'ALL' or Business=@BusinessUnit)
   and (@State ='ALL' or State=@State)
   and (@Class='ALL'or ClassCode=@Class)
   and EffectiveDate>=@StartDate 
   and ExpirationDate<=@EndDate
...