指定的强制转换在日期可空中无效

时间:2016-04-01 08:08:05

标签: vb.net date datetime

我正在尝试将null值存储到date数据类型变量中。该值来自我的DataSet,但我收到错误指定强制转换无效。这是我的代码:

Dim varTimeOut As Nullable(Of DateTime) = DSMemberAttendance.Tables("tblMemberAttendance").Rows(iCounter)("TimeOut")

有没有办法将空值存储到我的Date变量?我正在使用Visual Basic 2005.提前感谢。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

关于Stuarts的回答,下面的代码片段可以解决这个问题:

    Dim varTimeOut As Nullable(Of DateTime)
    If DSMemberAttendance.Tables("tblMemberAttendance").Rows(iCounter).IsNull("TimeOut") Then
        varTimeOut = Nothing
    Else
        varTimeOut = DirectCast(DSMemberAttendance.Tables("tblMemberAttendance").Rows(iCounter)("TimeOut"), DateTime)
    End If

如果这是有效的,请接受Stuarts的答案,因为他钉了它,我不想用借来的羽毛装饰自己。

答案 1 :(得分:1)

数据库代码不会为数据库中的NULL值返回Nothing。它改为返回一个特定的类型(我记得DBNull)。您需要专门检查数据库null(数据库字段上可能存在IsNull属性)并在这种情况下适当地设置Nullable,只有在Nullable包含有效日期时才将数据库值分配给Nullable。