2016-07-27 6 views
0

パラメータ(Country_Name)を受け入れるSSRSレポートがあります。渡されたパラメータで渡された異なる場所でのSSRSレポートの生成

これは週次レポートであり、SQLエージェントジョブをトリガして自動的に生成する必要があります。したがって、このレポートのデータ駆動型サブスクリプションを作成し、SQLエージェントジョブからレポートを生成するためのSSISパッケージを作成しました。

問題はです:自動レポートであるため、レポートにパラメータを渡すインターフェイスがありません。そこで、渡すパラメータのリストと生成されたレポートを配置するパスを保持するテーブルを作成しました。

表(\ ABC \中国、中国)を2列(COUNTRY_NAME & Report_Path)を持っているし、(インド\ AB123C \インド)のような値を保持しますなど

渡されたパラメータに応じて、レポートの場所が変更されます。だから、私はデータ駆動型のサブスクリプションクエリでループを使用して、パラメータとパスを取得します。それぞれのパラメータの複数のパラメータとパスがクエリによって返されますが、最初の結果セットのみが選択され、最初のパラメータとその指定された場所のレポートのみが生成されます。

解決方法が見つかりませんでした。私があなたの参照のために使用した以下のクエリを見つけてください。もし私がこれのための解決策を得ることができれば素晴らしいだろう。

DECLARE @MinCount INT = 1 
    DECLARE @Country VARCHAR(100) 
    DECLARE @Path VARCHAR(MAX) 
    DECLARE @RecordCount INT 
    DECLARE @CurrentDate VARCHAR(10) 
    DECLARE @CountryList Table (ID INT Identity(1,1),Country_Name Varchar(100),Report_path Varchar(max)) 
    SET @RecordCount = (SELECT COUNT(*) FROM Country_List) 
    WHILE (@MinCOunt < = @RecordCount) 
    BEGIN 
    SET @Country = (Select Country_name from Country_List WHere ID = @MinCOunt) 
    SET @Path = (Select Report_Path from Country_List WHere ID = @MinCOunt) 
    SET @CurrentDate = (SELECT CONVERT(char(10), GetDate(),126) as currentSysDate) 
    Delete from @CountryList 
    insert into @CountryList (Country_Name,Report_path) Values (@Country,@Path) 
    select 'Country_Details ' + 
    @CurrentDate as filename 
    ,'Excel' as RenderFormat 
    , (select Name from Master where 
    Reference_Name = 'USER_NAME' 
    ) as sqlUserId 
    ,(select Value from Master where 
    Reference_Name = 'PASSWORD' 
) as sqlPwd , (Select Country_Name from @CountryList) AS Issue_Country, 
(Select Report_path from @CountryList) AS filePath_cfonereports 
SET @MinCOunt = @MinCOunt + 1 
END 
+0

実際の問題とはあなたの質問に基づいて少し不明です。あなたが付けたコードは、この問題とは何の関係もないようです。 –

+0

上記のコードは、レポート用に作成したデータ駆動型サブスクリプションで使用されています。上記のコードのselectステートメントによって返された値に基づいて、filename、Path、RenderFormat、Reportingサーバーの資格情報およびパラメーターなどの値がサブスクリプションで設定され、レポートが生成されます。 –

+0

あなたの質問はまだ不明です。 「レポートの所在地」とはどういう意味ですか?あなたはサブスクリプションを作成するために何を使用していますか? –

答えて

0

サブスクリプションコードでループを使用するのではなく、別の方法を使用してこの問題を解決しました。私は参照テーブルを作成して、パラメータのリストと対応するパスに格納しました。このレポートはSSISパッケージから呼び出されているので、変数を使用して参照テーブルからパラメータのリストを取得し、foreachループコンテナでExecute SQLタスクを使用して、変数から一度に1つのパラメータを渡してサブスクリプションを呼び出しました。渡されたパラメーターと指定されたパスでレポートが生成されます。このforeachループコンテナは、変数のパラメータの数に基づいてn回ループします

関連する問題