【问题标题】:SSRS expression, iif statement with date conditionsSSRS 表达式,带日期条件的 iif 语句
【发布时间】:2014-12-20 13:50:18
【问题描述】:

所以我在 SSRS 中 startDate 和 endDate 的默认值是使用以下 ssrs 表达式设置的。

上个月的第一天 ssrs 表达式

=DateAdd(DateInterval.Month, -1, DateSerial(Year(Date.Now), Month(Date.Now), 1))

上个月的最后一天 ssrs 表达式

 =DateAdd(DateInterval.Day, -1, DateSerial(Year(Date.Now), Month(Date.Now), 1))

但这对我来说是行不通的,除非我想在每个月的 16 日进入并为当月前 15 天提出请求的人生成此报告。

所以在我的开始日期的默认值表达式中,我正在尝试这个 iif 语句...

= iif(
    DatePart(DateInterval.Day, Today() <> "20",
    DateInterval.Month, -1, DateSerial(Year(Date.Now), Month(Date.Now), 1),
    DateInterval.Month, 1, DateSerial(Year(Date.Now), Month(Date.Now), 1)
 )

效果不太好。所以我想做的是.....

根据当月的哪一天更改默认的开始和结束日期,所以如果当月的当日等于16,则将当月的开始日期设为1,将当月的结束日期设为15,如果是当天这个月的不是 16 使开始日期为上个月的第一天,结束日期为上个月的最后一天。因此,唯一需要做的就是获取订阅电子邮件以及发送它们的日期。

【问题讨论】:

  • 正确!每月 16 日我希望默认值是从当月 1 日到当月 15 日,其他日期是上个月的第一天和最后一天。
  • 为什么对两个订阅使用相同的 iif() 表达式?为什么不在第一次订阅时使用上个月表达式,而在第二次订阅时使用当前月份表达式?
  • 你不能在 sharepoint 中这样做,它使用的似乎是使用 ssrs 表单的默认值,所以我需要这些默认值根据当前月份的哪一天而有所不同。订阅此报告的共享点仅允许您选择报告默认值,或者您需要在订阅中自己设置它们。所以我需要这些默认的开始和结束日期值根据当月的当前日期(int 值)进行更改
  • 上面的 iif 语句是我尝试在 ssrs 报告中设置开始日期的默认值
  • 所以你可以在订阅中设置参数值,但是你不能使用任何一种表达式来使其动态化?

标签: date reporting-services expression


【解决方案1】:

未经测试,但如果你试试这个呢? (对于您的开始日期参数):

= iif(
    DatePart(DateInterval.Day, Today()) <>  "16",
    DateAdd(DateInterval.Month, -1, DateSerial(Year(Date.Now), Month(Date.Now), 1)),
    DateSerial(Year(Date.Now), Month(Date.Now), 1)
 )

【讨论】:

  • 感谢您的帮助!但是很过分!如果我完全理解 SSRS 表达式语法和 DateTime 的所有 SSRS 功能,我就不会在这里,这是我在 Visual Studio 中使用 SSRS 的第二周
  • 好吧,自从我发布我的答案以来,我看到您已经编辑了表达式,所以现在它看起来并不那么令人震惊。不过,我会从我的答案中编辑那部分。 ; )
  • 我知道!没有考虑太多条件更担心如何得到最终结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多