【问题标题】:Rolling report parameter for the 1st day of the month boundary value for @DateFrom@DateFrom 每月第一天边界值的滚动报告参数
【发布时间】:2014-07-02 09:22:34
【问题描述】:

我对运行每日报告的@datefrom 参数的边界值有疑问。

这是我已经完成了多少,但返回一个错误。

日期从

=IIF(DatePart("d",1,0,0),(DateAdd("m", -1, DateSerial(Year(Now), Month(now), 1))),(DateSerial(Year (现在), 月(现在), 1)))

错误信息

参数“DateValue”无法转换为类型“Date”

该表达式旨在允许从该月的最后一天到下一天的第一天更改边界日期。

任何帮助将不胜感激。 提前致谢。

【问题讨论】:

  • 所以给定一些日期,例如30-jun-201401-jul-201402-jul-2014,你希望从表达式中得到什么值?
  • 6 月 30 日将返回 1 日至 29 日,7 月 1 日将返回 1 日至 30 日,2nd 将仅返回 1 日至 1 日。
  • 您是否正在寻找一个返回的日期?如果是这样,是否还需要 DateTo 参数/表达式?或者您是否根据您的评论专门寻找一个组合两个日期的字符串?
  • 我发现简单的表达式 "DateAdd("d",-1,Today)" 返回正确的值。这只是我有问题的 DateFrom 。表达式“DateSerial(Year(Now), Month(now), 1)”有效,但是当月份从 30 日变为 1 日时它失败了。 30 日返回 1 日至 29 日,而 1 日则没有返回任何内容。

标签: reporting-services


【解决方案1】:

假设您只想在表达式中返回一个日期,您可以使用一些东西:

=IIf(DatePart("d", Today, 0, 0) = 1
    , DateAdd("m", -1,  Today)
    , DateSerial(Year(Today), Month(Today), 1))

对于今天(即 02-Jul-2014),这将返回日期 01-Jul-2014,但在昨天运行(即 01-Jul -2014) 你会得到 01-Jun-2014

您现有的表达式看起来有一些语法问题 - 您需要将DatePart 表达式的结果与IIf 表达式的第一个子句中的实际整数进行比较;它在第一个子句中需要一个布尔值。

另外,由于您只使用DatePart 来获取日期,因此您可以使用更少的参数:

=IIf(DatePart("d", Today) = 1
    , DateAdd("m", -1,  Today)
    , DateSerial(Year(Today), Month(Today), 1))

【讨论】:

  • 伊恩太棒了。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
相关资源
最近更新 更多