我有一个SSRS报告,它接受一个参数(Country_Name)。
这是每周报告,需要通过触发SQL代理作业自动生成。因此,我为此报告创建了一个数据驱动订阅,并创建了一个SSIS包以从SQL代理作业生成报告。
现在问题是:由于它是自动报告,因此没有接口将参数传递给报告。因此,我创建了一个表来保存要传递的参数列表以及放置生成的报告的路径。
表格将包含2列( Country_Name & Report_Path )并保留(India \ AB123C \ India)(中国,\ 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)
我现在通过使用不同的方法解决了这个问题,而不是在订阅代码中使用循环。我创建了一个参考表来存储参数列表以及相应的路径。由于此报告是从SSIS包中调用的,因此我使用了一个变量来获取参考表中的参数列表和一个带有执行SQL任务的foreach循环容器,以便一次从变量传递一个参数并调用订阅。这样就会为传递的参数和指定的路径生成报告。该foreach循环容器将根据变量
中的参数计数循环n次