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

Ric*_*ard 7 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
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ken*_*eth 18

在读取值之前,您需要进行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
Run Code Online (Sandbox Code Playgroud)

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

  • 也可以在其他2个方面检查DbNull.`r("BedID")IsNot DbNull.Value`和`Not TypeOf r("BedID")是DbNull`只是为了显示所有语法选项. (5认同)