This Microsoft Knowledge Base article解釋瞭如何做到這一點。
下面是示例代碼的摘錄。代碼使用來自一個進程的兩個連接,因此您需要將讀取部分拖放到第二個進程中。
- 作者必須在寫入數據之前使用ADO的Connection.BeginTrans啓動一個事務。
- 作者必須更新數據庫,然後提交事務(使用ADO的Connection.CommitTrans)。
- 在嘗試讀取數據之前,讀者必須調用JRO.JetEngine.RefreshCache傳遞它的連接。
請注意JRO.JetEngine是通過向您的VB項目添加對Microsoft Jet和複製對象2.1庫的引用。
Sub SyncReadDemo()
Dim conn1 As New ADODB.Connection
Dim conn2 As New ADODB.Connection
Dim rs As New ADODB.recordset
Dim JRO As New JRO.JetEngine
Dim strConnect As String
Dim i As Long
' Set up our connection string (requires a database named c:\db1.mdb).
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db1.mdb"
' Open connection 1 and drop and re-create test table.
conn1.CursorLocation = adUseServer
conn1.Open strConnect
On Error Resume Next
conn1.Execute "drop table tmpTest", , _
adExecuteNoRecords + adCmdText
On Error GoTo 0
conn1.Execute "create table tmpTest (id long)", , _
adExecuteNoRecords + adCmdText
' Close connection 1 to flush the creation of table tmpTest.
conn1.Close
' Now open connection 1 and connection 2.
conn1.Open strConnect
conn2.Open strConnect
' Insert 10 records using connection 1.
' Note we must perform all writes inside of a transaction.
conn1.BeginTrans
For i = 1 To 10
conn1.Execute "insert into tmpTest (id) values (1)", , _
adExecuteNoRecords + adCmdText
Next i
conn1.CommitTrans
' Refresh cache for reader connection.
JRO.RefreshCache conn2
Set rs = conn2.Execute("select * from tmpTest", , adCmdText)
' Count records in our table (should be 10).
i = 0
While Not rs.EOF
i = i + 1
rs.MoveNext
Wend
rs.Close
MsgBox "Read " & i & " records using different connections."
conn1.Close
conn2.Close
End Sub
這是哪一個用戶? – 2009-01-28 10:22:28