在传递参数的不同位置生成 SSRS 报告

Generating SSRS report in different location passed on the parameter passed

我有一个接受参数 (Country_Name) 的 SSRS 报告。

这是一份每周报告,需要通过触发 SQL 代理作业自动生成。因此,我为此报告创建了一个数据驱动的订阅,并创建了一个 SSIS 包以从 SQL 代理作业生成报告。

现在的问题是: 由于是自动上报,所以没有接口传参上报。所以,我创建了一个 table 来保存要传递的参数列表和放置生成的报告的路径。

Table 将有 2 列(Country_Name & Report_Path)并保存值比如(印度\AB123C\India)(中国,\ABC\China)等等

根据传递的参数,报告的位置会发生变化。因此,我在数据驱动的订阅查询中使用循环来获取参数和路径。尽管查询返回了多个参数和相应参数的路径,但它仅选择第一个结果集并仅为第一个参数及其指定位置生成报告。

我找不到解决这个问题的方法。请找到我使用的以下查询供您参考。如果我能得到解决方案就太好了。

 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

我现在已经通过使用不同的方法解决了这个问题,而不是在订阅代码中使用循环。我创建了一个引用 table 来存储到参数列表以及相应的路径。由于此报告是从 SSIS 包调用的,因此我使用变量从引用 table 获取参数列表,并使用带有执行 SQL 任务的 foreach 循环容器从变量传递一个参数时间并调用订阅。这样将为传递的参数和指定的路径生成报告。这个foreach循环容器会根据变量中参数的个数循环n次