2016-07-27 47 views
0

我有一個接受參數(Country_Name)的SSRS報告。在通過參數傳遞的不同位置生成SSRS報告

這是一個每週報告,需要通過觸發SQL代理作業自動生成。所以,我爲這個報告創建了一個數據驅動訂閱,並創建了一個SSIS包來從SQL代理作業生成報告。

現在的問題是:由於它是一個自動報告,因此沒有接口可以將參數傳遞給報告。所以,我創建了一個表來保存要傳遞的參數列表以及放置生成的報告的路徑。

表將有2列(COUNTRY_NAME & Report_Path)和持有像(印度\ AB123C \印度)值(中國,\ ABC \中國)

根據不同的參數傳遞,報告的位置將會改變。所以,我在數據驅動的訂閱查詢中使用循環來獲取參數和路徑。儘管查詢返回了各個參數的多個參數和路徑,但它僅挑選第一個結果集,並僅爲第一個參數及其指定位置生成報告。

我無法找到解決方案。請找到我以前用於參考的查詢。如果我能爲此獲得解決方案將是非常好的。

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語句返回的值,在預訂中將設置文件名,路徑,RenderFormat,報告服務器憑據和參數等值,以生成報告。 –

+0

你的問題仍然不清楚。 「報告的位置」是什麼意思?你用什麼來創建你的訂閱? –

回答

0

我已經通過使用不同的方法解決了這個問題,而不是在訂閱代碼中使用循環。我創建了一個參考表來存儲參數列表以及相應的路徑。由於此報表是從SSIS包調用的,因此我使用變量從參考表和具有Execute SQL任務的foreach循環容器中獲取參數列表,以一次傳遞變量中的一個參數並調用訂閱。因此,將爲傳遞的參數和指定的路徑生成報告。這個foreach循環容器將根據變量中的參數數量循環n次