簡體   English   中英

選擇多個值時,SSRS 中的 Twp 多選參數不顯示結果

[英]Twp multi select parameters in SSRS not displaying results for when selected more than one value

我有一個問題,SSRS 報告不填充第二個多值下拉列表,該列表依賴於第一個多值下拉列表,因此不填充報告。

因此,我在這里嘗試做的是從第一個下拉列表中為選定城市的建築承包商填充 SSRS 報告,並從第二個下拉列表中填充選定的技能集,一旦我們選擇了城市下拉列表,就會填充該報告。

但我的問題是當我選擇一個城市時,技能的下拉列表會毫無問題地填充,當我選擇多個城市時,我的技能下拉列表沒有任何價值。

我的代碼如下。 我有 3 個數據集。

數據集 1(主要)

ALTER PROCEDURE [dbo].[RPT_ADM_Total_Contractors]

    @Office nvarchar(255),
    @Start datetime,
    @End datetime,
    @Servicetype nvarchar(255)

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    SELECT    fs.skillname,fa.NEW_ContractorIDNAME AS ContractorName, fa.new_Contractorstatusname AS Contractorstatus,
          fa.createdon AS CreatedDate, fa.new_addresscity AS City
    FROM 
        Filterednew_contrator fa
    join
        FilteredService fs
    on fa.new_service = fs.serviceid

    WHERE 
    fa.new_sitename IN (@Office )
    AND fs.skillname IN (@Servicetype)


END

數據集 2

ALTER PROCEDURE [dbo].[RPT_ADM_Total_Contractors_Officelist]
    @Start date,
    @End date
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

        SELECT DISTINCT fa.new_sitename
    FROM 
        Filterednew_contrator fa
    join
        FilteredService fs
    on fa.new_service = fs.serviceid    
    WHERE       
        new_admitdate between @Start and @End
        AND new_sitename like 'Office%'
        fa.new_service is not null

END

數據集 3

ALTER PROCEDURE [dbo].[RPT_ADM_Total_Contractors_Servicetypelist]

        @Office nvarchar(255)
        --@Start datetime,
        --@End datetime

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    SELECT DISTINCT fs.skillname
    FROM 
        Filterednew_contrator fa
    join
        FilteredService fs
    on fa.new_service = fs.serviceid
    WHERE
    fa.new_sitename in (@Office)        
    order by fs.skillname


END

我有 4 個參數

@Start date/time
@End date/time
@Office "Allow Multivalue" AND gets populated from dataset 2
@Servicetype "Allow Mutivalue" AND gets populated from dataset 3

我嘗試使用 =Join(Parameters!Office.Value,",") 但沒有用。 我希望有人能幫我解決這個問題。

謝謝。

您有 2 個選擇。

選項 1. 將 SSRS 下拉列表設為單值下拉列表。

如果這不是一個可行的選擇,那么這里是選項 2:

您將不得不為存儲過程中的@Office 和@Servicetype 參數創建類似於 (n)varchar(1000); 的數據類型。 足夠長的時間來處理具有所有可能值的字符串。 然后您必須將字符串拆分為單獨的值,以便您可以在 IN 子句中使用它們。 這是我過去使用過的拆分 UDF(並在此站點上多次發布)。

CREATE FUNCTION [dbo].[udf_Split] 
   (  @List      varchar(8000), 
      @Delimiter varchar(5)
   ) 
   RETURNS @TableOfValues table 
      (  RowID   smallint IDENTITY(1,1), 
         [Value] varchar(100) 
      ) 
AS 
   BEGIN

      DECLARE @LenString int 

      WHILE len( @List ) > 0 
         BEGIN 

            SELECT @LenString = 
               (CASE charindex( @Delimiter, @List ) 
                   WHEN 0 THEN len( @List ) 
                   ELSE ( charindex( @Delimiter, @List ) -1 )
                END
               ) 

            INSERT INTO @TableOfValues 
               SELECT substring( @List, 1, @LenString )

            SELECT @List = 
               (CASE ( len( @List ) - @LenString ) 
                   WHEN 0 THEN '' 
                   ELSE right( @List, len( @List ) - @LenString - 1 ) 
                END
               ) 
         END

      RETURN 

   END 

一旦你有了它(在你的數據庫中),你可以在 WHERE 子句中將你的 SP 代碼更改為如下所示。

WHERE 
    fa.new_sitename IN (SELECT value FROM dbo.udf_Split(@Office, ','))
    AND fs.skillname IN (SELECT value FROM dbo.udf_Split(@Servicetype, ','))

享受!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM