2013-04-17 64 views
7

我一直在掙扎着過去的幾個小時,仍然無法讓我的頭繞過這一個。我遇到的問題是,當有人被錄取數據庫更新給他們BedID時,當我嘗試並解除他們時,我似乎無法將BedID(在數據庫中)設置爲無。這是一個問題,因爲我需要能夠儘可能多地接納和解僱。運算符'='沒有爲類型'DBNull'定義,而是類型'整數'

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 

謝謝!

+0

是什麼異常的堆棧跟蹤? – Dai

回答

15

你在閱讀前值做了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以便在功能,以防止出現此錯誤

+4

DbNull也可以在其他2箇中檢查。 'r(「BedID」)IsNot DbNull.Value'和'Not TypeOf r(「BedID」)是DbNull'只是爲了顯示所有的語法選項。 – DarrenMB

+1

有人給這個人喝啤酒! :d –

相關問題