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

MarshalOptions 屬性范例

該范例使用 MarshalOptions 屬性,指定將哪些行(所有行還是已修改的行)發(fā)送回服務(wù)器。

Public Sub MarshalOptionsX()

   Dim rstEmployees As ADODB.Recordset

   Dim strCnn As String

   Dim strOldFirst As String

   Dim strOldLast As String

   Dim strMessage As String

   Dim strMarshalAll As String

   Dim strMarshalModified As String

   ' 使用雇員表的姓名打開記錄集。

   strCnn = "Provider=sqloledb;" & _

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

   Set rstEmployees = New ADODB.Recordset

   rstEmployees.CursorType = adOpenKeyset

   rstEmployees.LockType = adLockOptimistic

   rstEmployees.CursorLocation = adUseClient

   rstEmployees.Open "SELECT fname, lname " & _

      "FROM Employee ORDER BY lname", strCnn, , , adCmdText

   ' 存儲原始數(shù)據(jù)。

   strOldFirst = rstEmployees!fname

   strOldLast = rstEmployees!lname

   ' 更改編輯緩沖區(qū)中的數(shù)據(jù)。

   rstEmployees!fname = "Linda"

   rstEmployees!lname = "Kobara"

   ' 顯示緩沖區(qū)中的內(nèi)容并讓用戶輸入。

   strMessage = "Edit in progress:" & vbCr & _

      " Original data = " & strOldFirst & " " & _

      strOldLast & vbCr & " Data in buffer = " & _

      rstEmployees!fname & " " & rstEmployees!lname & vbCr & vbCr & _

      "Use Update to replace the original data with " & _

      "the buffered data in the Recordset?"

   strMarshalAll = "Would you like to send all the rows " & _

               "in the recordset back to the server?"

   strMarshalModified = "Would you like to send only " & _

               "modified rows back to the server?"

   If MsgBox(strMessage, vbYesNo) = vbYes Then

      If MsgBox(strMarshalAll, vbYesNo) = vbYes Then

         rstEmployees.MarshalOptions = adMarshalAll

         rstEmployees.Update

      ElseIf MsgBox(strMarshalModified, vbYesNo) = vbYes Then

         rstEmployees.MarshalOptions = adMarshalModifiedOnly

         rstEmployees.Update

      End If

   End If

   ' 顯示結(jié)果數(shù)據(jù)。

   MsgBox "Data in recordset = " & rstEmployees!fname & " " & _

      rstEmployees!lname

   ' 恢復(fù)原始數(shù)據(jù),因?yàn)檫@只是演示。

   If Not (strOldFirst = rstEmployees!fname And _

         strOldLast = rstEmployees!lname) Then

      rstEmployees!fname = strOldFirst

      rstEmployees!lname = strOldLast

      rstEmployees.Update

   End If

   rstEmployees.Close

End Sub