VB數據庫編程經驗兩則

發表于:2007-07-14來源:作者:點擊數: 標簽:
在往SQL Server 數據庫 中添加記錄時,每個字段必須給予明確賦值(即在沒有給數據表設定缺省規則或給每個字段設定缺省值的情況下),否則便發生錯誤。因此我用 VB 編寫了一個處理函數,將其放入標準模塊,以供相應程序調用。函數首先判斷是否給字段賦值,若
  在往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

  ... 

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97