我有一个从数据集中提取的值TransactionDate
和一个由用户选择后作为参数创建的值endDate
。
大约有98%的报告行显示了正确的结果,但是我有几行未按预期正确返回数据,这是因为报告生成器正在识别某些TransactionDates
大于endDate
。
参数已设置为计算字段-> FormatDateTime(Parameters!endDate.Value,DateFormat.ShortDate)
我正在使用的语句向我显示了我正在查看的结果,以了解有效的方法和无效的方法
=IIF((Fields!endDateCalc.Value >= Fields!TransactionDateCalc.Value), Fields!UnitSales.Value, "N/A")
本质上,我关心的是了解为什么可能会发生这种情况/我正在做些什么导致这种情况发生。
我当然已经颠倒了所使用的公式,该公式向我显示了我正在寻找的结果,并反转了它以查看行是否反应,并且确实如此。 (只需将>=
切换为<=
。
例如,我们可以说TransactionDate
是3/4/2019
,而endDate
是3/25/2019
。对于此行,它将返回错误的结果并显示为N/A
。这应该为此行返回正确的UnitSales
值,但如上所述,它没有。
如果TransactionDate
是3/12/2019
,而endDate
仍然是3/25/2019
,它将返回正确的UnitSales
值。
请让我知道是否需要其他信息。
答案 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
。