s-s-rS 报告中的不同日期具有相同的计算
Posted
技术标签:
【中文标题】s-s-rS 报告中的不同日期具有相同的计算【英文标题】:Different dates in s-s-rS report with same calculation 【发布时间】:2016-09-15 08:37:43 【问题描述】:所以我有一个非常愚蠢的问题,但由于某种原因,我的“问题”没有工作。
其实很简单。 s-s-rS tablix 中的字段之一是使用 SQL 函数 DateAdd 计算的到期日期:
=DateAdd(DateInterval.Day, (Int(Fields!TMinus.Value) * 7), Parameters!StartDate.Value)
其中 TMinus 是模拟周的负整数,StartDate 是活动开始的日期。
我在 VB.NET 中使用此公式计算相同的东西来设置行单元格中活动的 DueDate:
Dim intTMinus As Integer = CInt(dataItem.GetDataKeyValue("TMinus").ToString)
CType(dataItem.FindControl("RlblDue"), RadLabel).Text = CDate(DateAdd(DateInterval.Day, (intTMinus * 7), dtStartDate)).ToString
问题在于 s-s-rS 报告显示的日期与网格不同,即使我已使用硬编码值来尝试在报告中找到罪魁祸首。
报告中的这个计算:
=DateAdd(DateInterval.Day, (Int(-40) * 7), '12/09/2016')
在网格中显示日期:07/12/2015,但在报告
中显示日期为 3/4/2016【问题讨论】:
【参考方案1】:注意DateAdd
参数数据类型必须分别为 DateInterval、Double 和 DateTime。您正在为第三个参数传递一个字符串'12/09/2016'
,但它需要一个DateTime
。顺便说一句,s-s-rS 中的字符串必须用双引号括起来。
修正后的表达式应该是这样的:
=DateAdd(DateInterval.Day, (Int(-40) * 7), CDATE("2016-09-12"))
返回:07/12/2015
作为 VB 中的网格。
注意CDATE("2016-09-12")
将日期字符串转换为DateTime
值。
检查您的参数是否设置为Date/Time
类型。
REFERENCE
如果这有帮助,请告诉我。
【讨论】:
以上是关于s-s-rS 报告中的不同日期具有相同的计算的主要内容,如果未能解决你的问题,请参考以下文章
s-s-rS - 使用矩阵中其他数据集中的列计算的字段(交叉表)
s-s-rS 2008 R2 从现有的 1 年后和星期一计算新日期?
SQL 2014,s-s-rS - 使用参数的时间计算给出错误和错误的计算