空字段的處理
在往SQLServer數據庫中添加記錄時,每個字段必須給予明確賦值(即在沒有給數據表設定缺省規則或給每個字段設定缺省值的情況下),否則便發生錯誤。因此我用VB編寫了一個處理函數,將其放入標准模塊,以供相應程序調用。函數首先判斷是否給字段賦值,若沒有,則根據字段類型的不同賦予不同數值(數字賦零,字符賦空格)。程序如下:
′zd變量采用變體類型
Functionnonull(zdAsVariant)AsVariant
IfIsNull(zd)Then
′字段沒有賦值,判斷其類型
Ifzd.Type=12Then
′字符型字段,賦空格
nonull=""
Else
′數字型字段,賦0
nonull=0
EndIf
Else
nonull=zd
EndIf
EndFunction
多字段記錄的錄入
如果我們需要編寫一個錄入程序,向某個SQLServer數據表(SJB)中錄入數據,而這個數據表中包含有多個字段,假設有30個字段,需通過InsertINTO語句完成。
InsertINTOSJBValue(A0,A1,A2,...,A29)
這裡A0、A1...A29為字段的錄入值,其中,若字段類型為字符型,需用引號括起。並且,如果操作者在錄入數據時,對某些字段沒有賦予明確值,則還需借助前面給出的處理函數給這些字段賦予相應的0或‘'。雖然,我們在編程時可依照InsertINTO語句句法依次羅列出30個字段值,然而,變通一下,利用循環語句,不僅可以達到異曲同工的效果,而且使得程序不再冗長、煩瑣,可讀性好。下面列出相關程序片段:
...
DimsqlstrAsString
Dimsqlstr1AsString
DimiAsInteger
Fori=0To29
′rs.rdoColumns(I)為數據表中的某一字段
Ifrs.rdoColumns(i).Type=12Then
′字段類型為字符,在兩側用引號括起
′函數nonull()用於防止空值出現
sqlstr=sqlstr&&"注釋:"&&nonull(A(i))&&"注釋:,"
Else
′字段類型為數字型
sqlstr=sqlstr&&nonull(A(i))&&","
EndIf
Next
′去掉最後一個逗號分隔符
sqlstr=Left(Trim(sqlstr),Len(Trim(sqlstr))-1)
′插入一條記錄到數據表中
sqlstr1="insertintosjbvalues("&&sqlstr&&")"
...
′執行插入語句
cn.Executesqlstr1
...->