SSRS报告中的不同日期具有相同的计算

时间:2016-09-15 08:37:43

标签: asp.net vb.net reporting-services ssrs-2008 ssrs-tablix

所以我有一个非常愚蠢的问题,但出于某种原因我的'问题'不是 正在工作

真的很简单。 SSRS 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

问题是SSRS报告显示的日期与网格不同,即使我使用了硬编码值来尝试在报告中找到罪魁祸首。

报告中的此计算:

  =DateAdd(DateInterval.Day, (Int(-40) * 7), '12/09/2016')

网格中显示日期:2015年12月7日,但在报告

上显示2016年3月4日

1 个答案:

答案 0 :(得分:0)

注意DateAdd参数数据类型必须分别是DateInterval,Double和DateTime。您正在为第三个参数传递字符串'12/09/2016',但它需要DateTime。顺便说一句,SSRS中的字符串必须用双引号括起来。

修复表达式后,它应该是这样的:

=DateAdd(DateInterval.Day, (Int(-40) * 7), CDATE("2016-09-12"))

返回:07/12/2015作为VB中的网格。

注意CDATE("2016-09-12")会将日期字符串转换为DateTime值。

检查您的参数是否设置为Date/Time类型。

REFERENCE

如果有帮助,请告诉我。