在传递参数的不同位置生成 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次
我有一个接受参数 (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次