无连接的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
使用的例子:
一个运行在便携式电脑上的应用程序可能需要从网上下载一些数据,可能在断开网络之后,还需要处理这些数据。当电脑重新与网络连接时,所有更新的数据都应该提交给主数据库!例子:
'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
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