2016-04-29 33 views
0

SSRSレポートに問題があり、最初の複数の値のドロップダウンリストに依存し、 。複数の値を選択した場合、SSRSの複数の選択パラメータが結果を表示しない

ここで私がしようとしているのは、最初のドロップダウンリストから選択した都市の建設請負業者のSSRSレポートを入力し、次に[都市]ドロップダウンリストを選択すると入力される2番目のドロップダウンリストから選択されたスキルセットです。

しかし私の問題は、スキルのドロップダウンリストに何も問題なく入力された都市を複数選択したときに、スキルのドロップダウンに値が表示されないということです。

私のコードは以下の通りです。私は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) 
     [email protected] datetime, 
     [email protected] 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 

I 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、 "、")を使用しようとしましたが機能しませんでした。 私は誰かがこれで私を助けてくれることを願っています。

ありがとうございました。

+0

私のオフィスは1)Office-NewYork 2)Office-London 3)Office-Toronto – user2040021

+0

あなたの専門知識を共有してください! – user2040021

+0

SSRSのような '@ VarName'を渡すことはできません。その項目、つまり '@ Office'を解析する関数を呼び出す必要があります。 – JonH

答えて

1

2つの選択肢があります。

オプション1. SSRSドロップダウンを1つの値に設定します。

それが実行可能な選択肢ではない場合は、ここでオプション2:

ストアドプロシージャで(n)のようなものを@Officeと@Servicetypeパラメータのデータ型を作成する必要があるとしています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, ',')) 

お楽しみください!

+0

これを投稿していただいたR.richards氏に感謝します。それは私が望むものを得るのを助けた。 – user2040021

+0

誰かがそれを必要とするなら、どのようにフルコードを追加するのですか?私は、日付フィルタを使用して3つすべてのデータセットを意味します。 – user2040021

+0

あなたはあなたの質問を編集して、ソリューションとして追加をマークすると思います。私はここにそれほど多くは見えませんが、私はそれを見ます。助けてうれしい! –

関連する問題