目标:为要在调度中使用的 SSRS 参数提供动态日期计算。
我有一个包含两个日期参数的报告,DateRangeBegin
并且DateRangeEnd
. 我们遇到的问题是用户希望将此报告安排在“月初至今”、“年初至今”、“上周”等日期范围内。当用户去安排报告时,他们只能为这两个参数提供静态日期。
我的想法是创建一个数据集,该数据集将计算这些值并在另一个名为DynamicDate
. 然后,用户将从DynamicDate
参数中选择“昨天”,DateRangeBegin
并且DateRangeEnd
参数将使用数据集中的计算值进行更新。
数据集将是这样的:
Select
2 as DateCalcId,
'Yesterday' as DateCalcDescription,
CONVERT(VARCHAR, DATEADD(DAY,-1,GETDATE()), 101) as DateCalcBegin,
CONVERT(VARCHAR, DATEADD(DAY,-1,GETDATE()), 101) as DateCalcEnd
UNION ALL
Select
1 as DateCalcId,
'Today' as DateCalcDescription,
CONVERT(VARCHAR, DATEADD(DAY,0,GETDATE()), 101) as DateCalcBegin,
CONVERT(VARCHAR, DATEADD(DAY,0,GETDATE()), 101) as DateCalcEnd
UNION ALL
Select
3 as DateCalcId,
'Month to Date' as DateCalcDescription,
CONVERT(VARCHAR,(CONVERT(datetime, CONVERT(VARCHAR, Year(GetDate())) + '-' + Convert(Varchar,Month(GetDate())) + '-01')), 101) as DateCalcBegin,
CONVERT(VARCHAR, DATEADD(DAY,0,GETDATE()), 101) as DateCalcEnd
order by
DateCalcId
我认为我想要使用的Lookup()
函数是日期参数中的函数作为它们的默认值,但是我在语法上遇到了一些问题。到目前为止,我有:
=Lookup(Parameters!DynamicDate.Value, Fields!DateCalcId.Value, Fields!DateCalcBegin.Value, "CalculatedDates")
但我收到了这个错误:
用于报告参数“DateRangeBegin”的值表达式引用一个字段。字段不能用于报表参数表达式。
有谁知道如何让这个工作?或者人们是否有另一种方式来做到这一点?