Q: | 假設有某一「字串」型別的欄位其名稱是「Fieldx」,則以下的敘述通常是正確的:
Dim S As String, rs As Recordset 但是當這個欄位沒有輸入資料時, 卻會產生錯誤, 該如何解決呢? |
A: | 由於 Fieldx 欄位中沒有資料, 所以 rs("Fieldx") 等於 Null,
在 VB 裡面, 如果我們把 Null 指定給「字串」型別的變數(如以上例子中的 S),
是不被接受的, 因此程式應修改如下:
Dim S As String, rs As Recordset Dim X ' 宣告一個不定型型別的變數 ' 假設 rs 是含有目前資料錄的 Recordset 物件 X= rs("Fieldx") If IsNull(X) Then S = "" ' Null 與 ""(空字串) 的意義並不相同 Else S = X End If 03/15 補充說明:更精簡的解答 以上程式利用 If 來判斷 Null, 必須多寫 5 行程式, 可讀性比較低, 以下則是更精簡的解決方案: S = "" & rs("Fieldx") 因為當 rs("Fieldx") 不等於 Null 時, "" & rs("Fieldx") 等於 rs("Fieldx"), 而當 rs("Fieldx") 等於 Null 時, 則 "" & rs("Fieldx") 等於 ""。 以上解決方案由潘振聲先生提供, 特此致謝! |