VB.Net是我的DataRow.IsNull或Format(datetimevalue,“ T”)问题吗?

| 我正在开发一个新的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 \'不是有效值。     
已邀请:
VB.Net中的“ 1”不会进行短路评估,因此即使该值为空,也会执行Format调用。 您需要使用If:
.TourTime = If(dr.IsNull(\"tourtime\"), Date.MinValue, Format(dr(\"tourtime\"), \"T\"))
这是此处描述的相同问题:使用VB.NET IIF,我得到NullReferenceException     
为了解决这个问题,我将检查存储的实际值。看起来为空的datetime列实际上可能有一个值。     
我认为您应该使用IsDbNull而不是IsNull。     

要回复问题请先登录注册