SQL Server Reporting Services:如何在数据驱动查询中使用报表参数?

问题描述 投票:0回答:1

我在 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

错误:

出现错误。
无法生成数据集。连接数据源时出错,或者查询对该数据源无效。

有办法解决这个问题吗?

提前谢谢您 沃尔坎

我尝试了谷歌、副驾驶和几种解决方法,但没有成功

reporting-services ssrs-2019
1个回答
0
投票

您的程序说明如下:

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
© www.soinside.com 2019 - 2024. All rights reserved.