没有为'DBNull'类型定义Operator'='并输入'Integer'

时间:2013-04-17 23:16:23

标签: vb.net

过去几个小时我一直在苦苦挣扎,仍然无法理解这一点。我遇到的问题是当有人被录取数据库更新给他们BedID时,当我尝试释放他们时,我似乎无法将BedID(在数据库中)设置为空。这是一个问题,因为我需要能够尽可能多地接纳和解雇人员。

Sub Dis1_Click(ByVal s As Object, ByVal e As EventArgs) Handles Dis1.ServerClick

    Dim time As String = Now().ToString("dd-MM-yyyy hh:mm:ss")

    sql = "UPDATE Allocation  SET BedID = NULL , DischargeDate =" + "'" + time + "'" + " WHERE BedID = 1 "
    cmd = New OdbcCommand(sql, cn)
    cmd.ExecuteNonQuery()
End Sub

Sub BedCheck1()
    If r("BedID") = "" Then
    Else
        If r("BedID") = 1 Then
            ba = s & "<tr><td>" & r("Surname") & "</td>" & "<td>" & r("Forename") & "/<td>" & "<td>" & r("AdmitDate") & "</td>" & "<td>" & r("DischargeDate") & "</td>" & "<td>" & r("comments") & "</td></tr>"
        End If
    End If
End Sub

谢谢!

3 个答案:

答案 0 :(得分:17)

在阅读值之前,您需要进行DbNull检查:

If Not IsDbNull(r("BedID")) Then

    If r("BedID") = "" Then
    Else If r("BedID") = 1 Then
        ba = s & "<tr><td>" & r("Surname") & "</td>" & "<td>" & r("Forename") & "/<td>" & "<td>" & r("AdmitDate") & "</td>" & "<td>" & r("DischargeDate") & "</td>" & "<td>" & r("comments") & "</td></tr>"
    End If
End If

请注意,DbNull是一种特殊情况,您需要使用IsDbNull函数来防止此错误

答案 1 :(得分:0)

那么,在检查数据验证之前,您需要检查它是否为DB null。

If Not IsDbNull(r("BedID")) Then
your code
End if 

答案 2 :(得分:0)

尝试一下: 如果r(“ BedID”)。ToString =“”那么

如果结束