【发布时间】:2014-03-14 20:31:36
【问题描述】:
目标:为要在调度中使用的 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”的值表达式 指一个领域。报表参数中不能使用字段 表达式。
有谁知道如何让它工作?或者人们有其他方法吗?
【问题讨论】:
标签: sql reporting-services reporting-services-2012