对 s-s-rS 中的参数使用 DateAdd 时出错

Posted

技术标签:

【中文标题】对 s-s-rS 中的参数使用 DateAdd 时出错【英文标题】:Error when using DateAdd on a parameter in s-s-rS 【发布时间】:2018-08-14 14:15:41 【问题描述】:

我正在尝试设置日期范围。我收到一个名为 @EffectiveDate 的参数,我想设置一个从生效日期前 3 年开始的范围。

举个例子。这是工作代码。

CStr(Format(CDate(DateAdd(DateInterval.Year, -3, Today())),"yyyy"))

但是当我尝试使用下面的参数时

=CStr(Format(DateAdd(DateInterval.Year, -3, CDate(Parameters!EffectiveDate.Value)),"yyyy"))

我得到一个错误。我不知道错误是什么。运行报告时我看到的只是#Error。

该参数在 s-s-rS 中设置为“日期/时间”,我什至将其转换为以防万一。

以下代码确实有效

=CStr(Format(CDate(Parameters!EffectiveDate.Value),"yyyy"))

所以看起来确实是“DateAdd”方法

任何帮助将不胜感激。谢谢

【问题讨论】:

它看起来应该可以工作了。如果您在 Visual Studio 中运行报告,您应该会在 错误列表 窗口中收到 有点 有用的错误消息,该消息可能会缩小哪个函数存在问题的范围。 FORMAT 已经转换为字符串,因此 CSTR 应该是不必要的。 我会排除所有功能并一次添加一个,直到出现错误。首先只是 EffectiveDate 参数,然后添加 CDATE,然后(如果有效)DateAdd 函数,然后格式化,CSTR ...您也可以尝试CSTR(YEAR(Parameters!EffectiveDate.Value) - 3) 【参考方案1】:

你能试试这个代码吗

=CStr(Format(CDate(DateAdd(DateInterval.Year, -3, CDate(Parameters!EffectiveDate.Value))),"yyyy"))

【讨论】:

【参考方案2】:

试试看是否可行

=CStr(Format(CDate(DateAdd("yyyy", -3, Now())), "yyyy"))  'Result =2015

如果可行,请尝试使用您的 Parameter(而不是 Now())。如果它不起作用,那么您的 参数

有问题

【讨论】:

以上是关于对 s-s-rS 中的参数使用 DateAdd 时出错的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 返回不正确的 WW

带有日期时间的 s-s-rS 图表空白

根据 s-s-rS 中的参数更改数据库

带参数的 s-s-rS 中的 Exec Base 过程

如何覆盖s-s-rS中的参数默认值?

将参数从 s-s-rS 数据集传递到雪花