|
|
在用vb開發(fā)平臺(tái)的,我們時(shí)常會(huì)遇見這樣一個(gè)問題
strName = cmbUser.SelectedItem.Value
'//
cmbUser.SelectedItem.Value = strName
上面兩個(gè)語句看是正常,可是有時(shí)我們?cè)谂軇?dòng)程序是“無緣無故” 在這里報(bào)錯(cuò)!!!
什么原因??因?yàn)関b中有種DbNull數(shù)據(jù)類型,在幫助文檔里面這種函數(shù)的解釋不夠清晰
很多人無法立即,到這里就束手無策,咋辦??
簡(jiǎn)單 可以寫個(gè)函數(shù)
private function DbNullTo(byval strSource as string,byval repl as string ) as string
if IsDbNull(strSource) = true then
return repl
else
return strSource
end if
end sub
這是我們可以保證程序中不會(huì)出現(xiàn)有DbNuLL 類型時(shí)會(huì)出錯(cuò)(上面的情況只處理了字符型)
我們可以中 重載的方式來寫上面的函數(shù) 這樣可以處理其他的情況
但是 這樣的情況下 代碼會(huì)增加
怎么辦??
我們利用vb里面的 object 類型來試試
private function DbNullTo(byval datSource as object,byval datRepl as object ) as object
if IsDbNull(datSource) = true then
select case datRepl .GetType.Name
case "Int32" ' Integer
return CInt(datRepl )
case "Single" 'Single
case "Double" ' Double
....
end select
end if
select case datSource.GetType.Name
case "Int32" ' Integer
return CInt(strDatSource)
case "Single" 'Single
case "Double" ' Double
....
end select
end function
需要注意的是 上面的代碼中 雙引號(hào)類的類型名要區(qū)分大小寫 ,當(dāng)然上面的寫法不是最好的方法
但是可以一勞永逸 |
|