【问题标题】:SSRS dataset filterSSRS 数据集过滤器
【发布时间】:2016-09-29 00:30:37
【问题描述】:

您好,我正在尝试在 ssrs 中构建一份报告,该报告根据结束日为星期六的当前周末日期提供输出。我正在从 SSAS Cube 中提取数据,并且我有一个周末日期字段,因此我在查询设计器中应用了一个过滤器,以使用我使用此表达式的参数获取当前的周末日期:

DateAdd("d",7-DatePart(DateInterval.Weekday,Today,FirstDayOfWeek.Sunday),Today)

当我执行查询时,它会抛出一个错误,指出违反了 STRTOSET 函数中 constrained 标志施加的限制。

请告诉我如何解决这个问题。

【问题讨论】:

  • 我认为您需要在数据集属性过滤器选项卡中使用该表达式

标签: reporting-services


【解决方案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

如果这有帮助,请告诉我。

【讨论】:

  • @sam,它会抛出同样的错误吗?如果是这样,请显示您的 200 Date 维度的有效成员示例。
  • 您好,感谢您的帮助...我按照您的建议尝试了这个表达式 "[200 Date].[Week Ending Date].&[" & format(DateAdd("d",7- DatePart(DateInterval.Weekday,Today,FirstDayOfWeek.Sunday), Today),"yyyy-MM-ddThh:mm:ss") &"]" 仍然给我同样的错误
  • @sam,在 SSAS 中的多维数据集中浏览 [200 Date].[Week Ending Date] 级别并选择任何日期,右键单击它并选择复制,然后将其粘贴到此处。
  • @zuleta 2016-10-01
  • @sam,我希望有一个像这样的有效成员:[200 Date].[Week Ending Date].&[2016-10-01]。如果是这种情况,请尝试在我的答案中更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 2019-07-04
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多