從型別 'DBNull' 轉換為型別 'String' 是無效的。
如果從資料庫讀資料出來要放在
Label 或 Textbox 等控制項應該會常碰到這問題。
就是當資料庫有欄位是Null時,無法轉為String就會出現上述的錯誤訊息。
這時該怎麼辦呢?
例如:Er_Code這欄位裡面是Null則在放入Text就會出現錯誤。
Me.Code.Text = DV(i)("Er_Code")
這時你可以這樣做。利用IsDBNull這函式來判斷
If IsDBNull(DV(i)("Er_Code")) Then
Me.Code.Text = ""
Else
Me.Code.Text = DV(i)("Er_Code")
End If
但是如果很多個地方都需要不可能每個地方都寫一次這樣的判斷吧。
這時就需要個函式啦,讓它Null就傳回「""」空字串。
Function CheckDdNull(ByVal data As Object) As String
If IsDBNull(data) Then
Return ""
Else
Return data
End If
End Function
有注意到紅色字體嗎?需注意千萬別把傳入值寫成
Function CheckDdNull(ByVal data As String) As String
之前Berni我就因為這個盲點一直試不出bug在那,相信大家都沒我那麼
笨應該懂為什麼吧。
因為當資料庫的值是Null傳過來不等於String那錯誤就會發生了。
那怎麼辦呢?難道寫 DBNull 那如果資料庫有值不是也會錯嗎?
這裡有個方便的方法可以寫成 Object 這樣不管傳來什麼也不會錯了
2 則留言:
從資料庫讀出來的時候,就不要讀取null就好啦!XD
column1 IS NOT NULL , 哈哈!
哈哈 你是說直接在select做手腳嗎?
也是另一種方法。
我的t-sql太差了,所以只好用這方法xd
張貼留言