当 t-sql 结果集为空时,在 SSRS 报告 header 中显示日期
Display date in SSRS report header when t-sql resultset is empty
我有一个简单的 SSRS 报告,它由两部分组成:详细信息部分和 header 部分。 header 有标题,详细信息有存储过程结果集。
报告调用存储过程 dbo.usp_GetChanges,看起来像这样:
create procedure dbo.usp_GetChanges
as
declare @Date int
select top 1 @Date = datekey
from DatesProcessed order by DatesProcessedid desc
select RunDate, OldName, NewName from EmployeeLog
where RunDate = @Date
如果最后一个 运行 日期是 20150215,则结果如下所示:
20150215 Joe John
20150215 Mary Marie
20150215 Bob Bobo
对于 SSRS header,我使用 SP 的结果集来填充标题。所以当天报告的标题是:20150215 年的变化
但假设目前报告的 运行 没有任何更改,因此 SP 没有 return 任何内容。是否可以使用相同的存储过程 return @Date?
我知道有几种方法可以解决这个问题(即子报表、另一个 SP 等);我正在寻找可以集成到此存储过程中的解决方案。
我正在考虑向 SP 添加一个 OUTPUT 变量(即 @Date datetime OUTPUT
),但 SSRS 将其解释为输入参数。我尝试将它隐藏在 SSRS 中,但它要求我提供参数值,即使它没有用于此目的。
谢谢。
在存储过程中检查 select 是否为 returning 行。如果是 return select 行,否则 select 日期。
IF NOT EXISTS(
select RunDate, OldName, NewName from EmployeeLog
where RunDate = @Date)
BEGIN
select @Date RunDate
END
ELSE
select RunDate, OldName, NewName from EmployeeLog
where RunDate = @Date)
如果有帮助请告诉我
我有一个简单的 SSRS 报告,它由两部分组成:详细信息部分和 header 部分。 header 有标题,详细信息有存储过程结果集。
报告调用存储过程 dbo.usp_GetChanges,看起来像这样:
create procedure dbo.usp_GetChanges
as
declare @Date int
select top 1 @Date = datekey
from DatesProcessed order by DatesProcessedid desc
select RunDate, OldName, NewName from EmployeeLog
where RunDate = @Date
如果最后一个 运行 日期是 20150215,则结果如下所示:
20150215 Joe John
20150215 Mary Marie
20150215 Bob Bobo
对于 SSRS header,我使用 SP 的结果集来填充标题。所以当天报告的标题是:20150215 年的变化
但假设目前报告的 运行 没有任何更改,因此 SP 没有 return 任何内容。是否可以使用相同的存储过程 return @Date?
我知道有几种方法可以解决这个问题(即子报表、另一个 SP 等);我正在寻找可以集成到此存储过程中的解决方案。
我正在考虑向 SP 添加一个 OUTPUT 变量(即 @Date datetime OUTPUT
),但 SSRS 将其解释为输入参数。我尝试将它隐藏在 SSRS 中,但它要求我提供参数值,即使它没有用于此目的。
谢谢。
在存储过程中检查 select 是否为 returning 行。如果是 return select 行,否则 select 日期。
IF NOT EXISTS(
select RunDate, OldName, NewName from EmployeeLog
where RunDate = @Date)
BEGIN
select @Date RunDate
END
ELSE
select RunDate, OldName, NewName from EmployeeLog
where RunDate = @Date)
如果有帮助请告诉我