2013-04-17 34 views
7

Ho lottato per le ultime ore e non riesco ancora a capirlo. Il problema che sto avendo è quando qualcuno è stato ammesso agli aggiornamenti del database dando loro BedID, quando poi provo a scaricarli non riesco a impostare il BedID (nel database) a nulla. Questo è un problema in quanto devo essere in grado di ammettere e liberare il maggior numero di persone possibile.L'operatore "=" non è definito per il tipo "DBNull" e digitare "Intero"

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 

Grazie!

+0

Che cosa è la traccia dello stack dell'eccezione? – Dai

risposta

15

Hai bisogno di fare un DBNull-check prima di leggere il valore:

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 

Nota che DBNull è un caso speciale e avete bisogno di utilizzare l'IsDBNull-funzione per evitare che questo errore

+4

Il DbNull può anche essere controllato in 2 modi diversi. 'r (" BedID ") IsNot DbNull.Value' e' Not TypeOf r ("BedID") è DbNull' solo per mostrare tutte le opzioni di sintassi. – DarrenMB

+1

qualcuno dà una birra a quest'uomo! : D –

Problemi correlati