2013-04-17 2 views
7

Я боролся в течение последних нескольких часов и до сих пор не могу разглядеть эту главу. Проблема, с которой я сталкиваюсь, - это когда кто-то был допущен к обновлению базы данных, давая им BedID, когда я пытаюсь их выполнить, я не могу установить BedID (в базе данных) ни к чему. Это проблема, поскольку мне нужно уметь принимать и освобождать как можно больше людей.Оператор '=' не определен для типа 'DBNull' и type 'Integer'

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 –

Смежные вопросы