此頁沒有內(nèi)容條目
內(nèi)容

OriginalValue 和 UnderlyingValue 屬性范例

該范例通過當(dāng)某記錄的基本數(shù)據(jù)在 Recordset 批更新過程中被更改時(shí)顯示有關(guān)信息,來說明 OriginalValueUnderlyingValue 屬性。

Public Sub OriginalValueX()

   Dim cnn1 As ADODB.Connection

   Dim rstTitles As ADODB.Recordset

   Dim fldType As ADODB.Field

   Dim strCnn As String

   ' 打開連接。

   Set cnn1 = New ADODB.Connection

   strCnn = "Provider=sqloledb;" & _

      "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "

   cnn1.Open strCnn

   ' 打開批更新的記錄集。

   Set rstTitles = New ADODB.Recordset

   Set rstTitles.ActiveConnection = cnn1

   rstTitles.CursorType = adOpenKeyset

   rstTitles.LockType = adLockBatchOptimistic

   rstTitles.Open "titles"

   ' 設(shè)置 Type 字段的字段對(duì)象變量。

   Set fldType = rstTitles!Type

   ' 更改 psychology 標(biāo)題的類型。

   Do Until rstTitles.EOF

      If Trim(fldType) = "psychology" Then

         fldType = "self_help"

      End If

      rstTitles.MoveNext

   Loop

   ' 通過使用命令字符串更新數(shù)據(jù)的方法模擬另一用戶所做的更改。

   cnn1.Execute "UPDATE titles SET type = 'sociology' " & _

      "WHERE type = 'psychology'"

   ' 檢查更改。

   rstTitles.MoveFirst

   Do Until rstTitles.EOF

      If fldType.OriginalValue <> _

         fldType.UnderlyingValue Then

         MsgBox "Data has changed!" & vbCr & vbCr & _

            "  Title ID: " & rstTitles!title_id & vbCr & _

            "  Current value: " & fldType & vbCr & _

            "  Original value: " & _

            fldType.OriginalValue & vbCr & _

            "  Underlying value: " & _

            fldType.UnderlyingValue & vbCr

      End If

      rstTitles.MoveNext

   Loop

   ' 取消更新,因?yàn)檫@只是演示。

   rstTitles.CancelBatch

   rstTitles.Close

   ' 恢復(fù)原始值。

   cnn1.Execute "UPDATE titles SET type = 'psychology' " & _

      "WHERE type = 'sociology'"

   cnn1.Close

End Sub