VB6程序中NULL注意事項


VB6中從數據庫中取出欄位值進行操作,若欄位值為Null,則必須小心處理,否則極易導致程序出錯退出。

 

通常我們從recordset中取出欄位值采用Fields方法,加上欄位名稱,如

rsMoney.Fields("SecondPlate")

 

以上Fields方法返回的是Variant類型,Variant類型允許為Null,但我們通常將欄位值當做string或int類型來使用,如賦值、比較,就會出錯!

 

1,Null賦值操作

如以下代碼:

1)        Dim ss As String

2)        Dim aa As Variant

3)        ss = "/~2018-12-10 13:40:33,45.50,45.50"

4)        aa = Null '不會出錯

5)        ss = IIf(IsNull(aa), "", aa)  '不會出錯

6)        ss = aa '出錯

7)        ss = aa & ""  '不會出錯

 

ss為字符串類型,aa為Variant類型,

  •  Variant類型變量可以賦值為Null,所以第4行不會出錯
  •  第5行在將Null賦值給字符串變量前,先用isNull函數判斷是否為Null,用IIF函數將Null轉換為空字符串再賦值給ss,所以不會出錯
  •  第6行直接將Null賦值給字符串變量,所以出錯
  •  第7行在將Null賦值給字符串變量前,先與空字符串連接,右側運算結果為空字符串,所以不會出錯

 

2,Null比較操作

   Dim ss As String

   Dim aa As Variant

   ss = ""

   aa = Null '不會出錯

   If ss = aa Then

    Form1.Text1.Text = "1!"

   Else

    If ss > aa Then

     Form1.Text1.Text = "2!"

    Else

        If ss < aa Then

            Form1.Text1.Text = "3!"

        Else

            Form1.Text1.Text = "4!"

        End If

     End If

   End If

 

以上代碼運行結果為4!

因為與Null進行比較,無論是大於還是小於還是等於,其結果全部為False。

3,數據庫欄位值可能為Null時,代碼操作注意事項

綜上,建議如下:

  • 在VB中取出記錄欄位值在進行賦值前,應進行判斷或轉換。建議賦值前與空字符串進行連接操作,比較簡明。即:

Dim ss As String

Ss = rsMoney.Fields("SecondPlate") & ""

  • 記錄欄位值可能為Null時,不能等同於空字符串進行比較操作。可能為Null的欄位值,在進行比較操作前應先進行明確的判斷或轉換,以免程序產生bug。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM