Public Sub OpenX()   Dim cnn1 As ADODB.Connection
   Dim rstEmployees As ADODB.Recordset
   Dim strCnn As String
   Dim varDate As Variant   ' 打开连接。
      strCnn = "Provider=sqloledb;" & _
      "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
   Set cnn1 = New ADODB.Connection
   cnn1.Open strCnn
   
   ' 打开雇员表。
   Set rstEmployees = New ADODB.Recordset
   rstEmployees.CursorType = adOpenKeyset
   rstEmployees.LockType = adLockOptimistic
   rstEmployees.Open "employee", cnn1, , , adCmdTable   ' 将第一个雇员记录的受雇日期赋值给变量,然后更改受雇日期。
   varDate = rstEmployees!hire_date
   Debug.Print "Original data"
   Debug.Print "  Name - Hire Date"
   Debug.Print "  " & rstEmployees!fName & " " & _
      rstEmployees!lName & " - " & rstEmployees!hire_date
   rstEmployees!hire_date = #1/1/1900#
   rstEmployees.Update
   Debug.Print "Changed data"
   Debug.Print "  Name - Hire Date"
   Debug.Print "  " & rstEmployees!fName & " " & _
      rstEmployees!lName & " - " & rstEmployees!hire_date   ' 再查询 Recordset 并重置受雇日期。
   rstEmployees.Requery
   rstEmployees!hire_date = varDate
   rstEmployees.Update
   Debug.Print "Data after reset"
   Debug.Print "  Name - Hire Date"
   Debug.Print "  " & rstEmployees!fName & " " & _
      rstEmployees!lName & " - " & rstEmployees!hire_date   rstEmployees.Close
   cnn1.CloseEnd Sub

解决方案 »

  1.   

    ADO 教程 (VB) 
    Public Sub main()Dim conn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rs As New ADODB.Recordset
    ‘步骤 1
    conn.Open "DSN=pubs;uid=sa;pwd=;database=pubs"
    ‘步骤 2
    Set cmd.ActiveConnection = conn
    cmd.CommandText = "SELECT * from authors"
    ‘步骤 3
    rs.CursorLocation = adUseClient
    rs.Open cmd, , adOpenStatic, adLockBatchOptimistic
    ‘步骤 4
    rs("au_lname").Properties("Optimize") = True
    rs.Sort = "au_lname"
    rs.Filter = "phone LIKE '415 5*'"
    rs.MoveFirst
    Do While Not rs.EOF
        Debug.Print "Name: " & rs("au_fname") & " "; rs("au_lname") & _
            "Phone: "; rs("phone") & vbCr
        rs("phone") = "777" & Mid(rs("phone"), 5, 11)
        rs.MoveNext
    Loop‘步骤 5
    conn.BeginTrans‘步骤 6 - A
    On Error GoTo ConflictHandler
    rs.UpdateBatch
    On Error GoTo 0conn.CommitTransExit Sub‘ 步骤 6 - B
    ConflictHandler:rs.Filter = adFilterConflictingRecords
    rs.MoveFirst
    Do While Not rs.EOF
        Debug.Print "Conflict: Name: " & rs("au_fname"); " " & rs("au_lname")
        rs.MoveNext
    Loop
    conn.Rollback
    Resume NextEnd SubVisual Basic 教程到此结束。