无连接的ADO Recordset允许你继续使用一个已经不与数据库连接的Recordset。
使用的例子:
一个运行在便携式电脑上的应用程序可能需要从网上下载一些数据,可能在断开网络之后,还需要处理这些数据。当电脑重新与网络连接时,所有更新的数据都应该提交给主数据库!例子:
'CreateDisconnectedRS
Private Sub CreateDisconnectedRS(cn As ADODB.Connection)    Dim rs As New ADODB.Recordset
    Dim i As Integer
    
    ' To later update the recordset this must be saved as an updateable recordset
    rs.Open "SELECT * FROM department", cn, adOpenKeyset, adLockOptimistic
    For i = 1 To 25
        rs.AddNew
        rs!Dep_ID = i
        rs!Dep_Name = "On-line update: " & CStr(i)
        rs.Update
    Next
    
    'Save the Recordset in XML format
    If Dir(App.Path & "\department.ADTG") <> "" Then
        Kill App.Path & "\department.ADTG"
    End If
    rs.Save App.Path & "\department.ADTG", adPersistADTG
    
    'Saving doesn't close the recordset
    DisplayKeysetGrid rs, hflxResults
    
    rs.Close
    Set rs = NothingEnd Sub

解决方案 »

  1.   

    'OpenDisconnectedRS
    Private Sub OpenDisconnectedRS(cn As ADODB.Connection)    Dim rs As New ADODB.Recordset
        Dim i As Integer
        
        On Error GoTo ErrorHandler
        
        'Open the saved recordset & allow updates
        rs.LockType = adLockBatchOptimistic
        rs.CursorLocation = adUseClient
        rs.Open App.Path & "\department.ADTG", "Provider=MSPersist;", _
            adOpenStatic, adLockBatchOptimistic, adCmdFile    rs.MoveFirst
        'Update the recordset off-line
        For i = 1 To 25
            rs!Dep_Name = "Disconnected Update: " & CStr(i)
            rs.Update
            rs.MoveNext
        Next
        
        'Reconnect the recordset
        rs.ActiveConnection = cn
        'Post the table updates
        rs.UpdateBatch
        
        'Display the recordset
        DisplayKeysetGrid rs, hflxResults
        
        rs.Close
        Set rs = Nothing
        Exit Sub
        
    ErrorHandler:
        DisplayADOError cn
        MousePointer = vbDefaultEnd Sub