VB數(shù)據(jù)庫編程經(jīng)驗(yàn)2則
發(fā)表時(shí)間:2023-07-17 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在往SQL Server數(shù)據(jù)庫中添加記錄時(shí),每個(gè)字段必須給予明確賦值(即在沒有給數(shù)據(jù)表設(shè)定缺省規(guī)則或給每個(gè)字段設(shè)定缺省值的情況下),否則便發(fā)生錯(cuò)誤。因此我用VB編寫了一個(gè)處理函數(shù),將其放入標(biāo)準(zhǔn)模塊,...
在往SQL Server數(shù)據(jù)庫中添加記錄時(shí),每個(gè)字段必須給予明確賦值(即在沒有給數(shù)據(jù)表設(shè)定缺省規(guī)則或給每個(gè)字段設(shè)定缺省值的情況下),否則便發(fā)生錯(cuò)誤。因此我用VB編寫了一個(gè)處理函數(shù),將其放入標(biāo)準(zhǔn)模塊,以供相應(yīng)程序調(diào)用。函數(shù)首先判斷是否給字段賦值,若沒有,則根據(jù)字段類型的不同賦予不同數(shù)值(數(shù)字賦零,字符賦空格)。程序如下:
′zd變量采用變體類型
Function nonull(zd As Variant) As Variant
If IsNull(zd) Then
′字段沒有賦值,判斷其類型
If zd.Type = 12 Then
′字符型字段,賦空格
nonull = " "
Else
′數(shù)字型字段,賦0
nonull = 0
End If
Else
nonull = zd
End If
End Function
多字段記錄的錄入
如果我們需要編寫一個(gè)錄入程序,向某個(gè)SQL Server數(shù)據(jù)表(SJB)中錄入數(shù)據(jù),而這個(gè)數(shù)據(jù)表中包含有多個(gè)字段,假設(shè)有30個(gè)字段,需通過Insert INTO語句完成。
Insert INTO SJB Value(A0,A1,A2,...,A29)
這里A0、A1...A29為字段的錄入值,其中,若字段類型為字符型,需用引號(hào)括起。并且,如果操作者在錄入數(shù)據(jù)時(shí),對某些字段沒有賦予明確值,則還需借助前面給出的處理函數(shù)給這些字段賦予相應(yīng)的0或‘ ’。雖然,我們在編程時(shí)可依照Insert INTO語句句法依次羅列出30個(gè)字段值,然而,變通一下,利用循環(huán)語句,不僅可以達(dá)到異曲同工的效果,而且使得程序不再冗長、煩瑣,可讀性好。下面列出相關(guān)程序片段:
...
Dim sqlstr As String
Dim sqlstr1 As String
Dim i As Integer
For i = 0 To 29
′rs.rdoColumns(I)為數(shù)據(jù)表中的某一字段
If rs.rdoColumns(i).Type = 12 Then
′字段類型為字符,在兩側(cè)用引號(hào)括起
′函數(shù)nonull()用于防止空值出現(xiàn)
sqlstr = sqlstr && "'" && nonull(A(i)) && "',"
Else
′字段類型為數(shù)字型
sqlstr = sqlstr && nonull(A(i)) && ","
End If
Next
′去掉最后一個(gè)逗號(hào)分隔符
sqlstr = Left(Trim(sqlstr), Len(Trim(sqlstr)) - 1)
′插入一條記錄到數(shù)據(jù)表中
sqlstr1 = "insert into sjb values(" && sqlstr && ")"
...
′執(zhí)行插入語句
cn.Execute sqlstr1
...