1

我正在开发一个新的 ASP.Net 4.0 数据驱动应用程序。在 DAL 中,我检查所有数据的 NULL 值,并在 NULL 时默认为正确的数据。我有一个奇怪的问题。两个约会回来了——一个我只需要时间。完整日期的第一行代码正常工作 - 但第二行代码错误指向格式字符串,但奇怪的部分是它在不使用格式字符串且仅返回 Date.MinValue 的 NULL 值上出错。当第二行获取数据时,它会正确格式化返回。

Dim dr As DataRow
.TourDate = IIf(dr.IsNull("tourdate"), Date.MinValue, Format(dr("tourdate"), "MM/dd/yyyy"))

.TourTime = IIf(dr.IsNull("tourtime"), Date.MinValue, Format(dr("tourtime"), "T"))

当 dr("tourtime") 为 NULL 时,错误出现在第二行 - 错误是:参数 'Expression' 不是有效值。

4

3 回答 3

6

IIf在 VB.Net 中不进行短路评估,因此即使值为空,也会执行 Format 调用。

您需要使用If

.TourTime = If(dr.IsNull("tourtime"), Date.MinValue, Format(dr("tourtime"), "T"))

这是此处描述的相同问题:Using VB.NET IIF I get NullReferenceException

于 2011-04-14T19:43:12.120 回答
0

为了解决这个问题,我会检查存储的实际值。看起来为空的日期时间列实际上可能有一个值。

于 2011-04-14T19:07:28.163 回答
-1

我认为您应该使用IsDbNull而不是 IsNull。

于 2011-04-14T16:51:57.030 回答