SQL Server报表生成器-TransactionDate值错误地显示为大于endDate值

时间:2019-03-25 14:05:25

标签: sql-server reporting-services

我有一个从数据集中提取的值TransactionDate和一个由用户选择后作为参数创建的值endDate

大约有98%的报告行显示了正确的结果,但是我有几行未按预期正确返回数据,这是因为报告生成器正在识别某些TransactionDates大于endDate

参数已设置为计算字段-> FormatDateTime(Parameters!endDate.Value,DateFormat.ShortDate)

我正在使用的语句向我显示了我正在查看的结果,以了解有效的方法和无效的方法

=IIF((Fields!endDateCalc.Value >= Fields!TransactionDateCalc.Value), Fields!UnitSales.Value, "N/A")

本质上,我关心的是了解为什么可能会发生这种情况/我正在做些什么导致这种情况发生。

我当然已经颠倒了所使用的公式,该公式向我显示了我正在寻找的结果,并反转了它以查看行是否反应,并且确实如此。 (只需将>=切换为<=

例如,我们可以说TransactionDate3/4/2019,而endDate3/25/2019。对于此行,它将返回错误的结果并显示为N/A。这应该为此行返回正确的UnitSales值,但如上所述,它没有。

如果TransactionDate3/12/2019,而endDate仍然是3/25/2019,它将返回正确的UnitSales值。

请让我知道是否需要其他信息。

1 个答案:

答案 0 :(得分:0)

我认为比较采用3/4/2019,并且出于某种原因,采用4并将其与endDate中的2进行比较。我建议将比较更改为以下表达式。

  =IIF((Year(CDate(Fields!endDate.Value)) >= Year(CDate(Fields!TransactionDate.Value))) 
     AND DatePart(DateInterval.DayOfYear, CDate(Fields!endDate.Value)) >= DatePart(DateInterval.DayOfYear, CDate(Fields!TransactionDate.Value)),
     Fields!UnitSales.Value, "N/A")

这将首先比较每个日期的年份,然后避免转换方面的任何问题,只需获取每个日期的年份进行比较并确认endDate大于TransactionDate