我在 Reporting Services 中有一个报告,它应该使用数据驱动的查询来创建动态文件名。
为此,我创建了一个接受 3 个参数的存储过程:
ALTER PROCEDURE [dbo].[sp_GenerateReportFilename]
@ReportName NVARCHAR(100) = 'Report',
@ReportExtension NVARCHAR(100) = '.xslx',
@StartDate DATETIME
AS
BEGIN
DECLARE @Year INT, @Month INT, @Day INT,@ReportDate NVARCHAR(20), @Filename NVARCHAR(100)
-- Extract year and month from the parameter
SET @Year = YEAR(@StartDate)
SET @Month = MONTH(@StartDate)
SET @Day= DAY(@StartDate)
-- Format year and month as "####-##"
SET @ReportDate = FORMAT(@Year, '0000') + '-' + FORMAT(@Month, '00') + '-' + FORMAT(@Day, '00')
-- Construct the filename
SET @Filename =@ReportName + ' (' + @ReportDate + ')' + @ReportExtension
-- Return the filename
SELECT @Filename AS ReportFilename
这在测试中效果很好:
EXEC sp_GenerateReportFilename 'MyReport', '.xslx', '2023-12-31';
但是,如果我尝试在数据驱动查询中使用也称为“ReportDate”的 SSRS 报告,则会出现错误。
查询:
EXEC sp_GenerateReportFilename 'MyReport', '.xslx', @ReportDate
错误:
出现错误。
无法生成数据集。连接数据源时出错,或者查询对该数据源无效。
有办法解决这个问题吗?
提前谢谢您 沃尔坎
我尝试了谷歌、副驾驶和几种解决方法,但没有成功
您的程序说明如下:
ALTER PROCEDURE [dbo].[sp_GenerateReportFilename]
@ReportName NVARCHAR(100) = 'Report',
@ReportExtension NVARCHAR(100) = '.xslx',
@StartDate DATETIME
AS
您正在使用以下命令调用存储过程:
EXEC sp_GenerateReportFilename 'MyReport', '.xslx', @ReportDate
但是,您的存储过程使用@Startdate
所以声明应该是
EXEC sp_GenerateReportFilename 'MyReport', '.xslx', @StartDate