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