您好我正在尝试在ssrs中构建一个报告,该报告根据当前周末的日期提供输出,其中结束日是星期六。我从SSAS Cube中提取数据,并且我有一个周末日期字段,所以我在查询设计器中应用了一个过滤器,使用我使用此表达式的参数获取当前的周末日期:
DateAdd("d",7-DatePart(DateInterval.Weekday,Today,FirstDayOfWeek.Sunday),Today)
当我执行查询时,它会抛出一个错误,说明违反了STRTOSET函数中约束标志所施加的限制。
请告诉我如何解决此问题。
答案 0 :(得分:1)
抛出错误是因为您传递的字符串与多维数据集中的有效成员不对应。
请注意,查询设计器根据您选择的维度和成员构建MDX查询,此查询使用STRTOSET()函数将您的字符串参数转换为有效成员。
...
STRTOSET(@CurrentWeekendDate,CONSTRAINED)
...
如果您将当前的周末日期传递给参数,则会生成:
STRTOSET('2016-01-10',CONSTRAINED)
由于2016-01-10
不是日期维度中的有效成员,因此会抛出错误。
你必须根据你的立方体传递这样的东西:
[Date].[Date Key].&[2005-01-01T00:00:00]
因此,在SSRS中,您必须将参数设置为Text并使用以下表达式:
正确表达:
="[200 Date].[Week Ending Date].&[" &
Format(
DateAdd("d",7-DatePart(DateInterval.Weekday,Today,FirstDayOfWeek.Sunday),Today),
"yyyy-MM-ddThh:mm:ss"
)
& "]"
更新:如果[Week Ending date]
级别没有包含时间:
="[Date].[Date Key].&[" &
Format(
DateAdd("d",7-DatePart(DateInterval.Weekday,Today,FirstDayOfWeek.Sunday),Today),
"yyyy-MM-dd"
)
& "]"
如果卡住,请浏览this tutorial。
如果有帮助,请告诉我。