使ACCESS資料庫保持同步

來源:互聯網
上載者:User
access|資料|資料庫 同步(Synchronization)是資料庫在網路環境中應用所要涉及到的一個重要概念。其基本過程大致分以下幾個步驟:首先把一個資料庫設為可複製副本屬性,使其成為設計正本(VB中稱設計原版,ACCESS中稱設計主複本);然後根據應用程式的實現需要從設計正本複製出多個副本(VB中稱複本),這些副本組成一個複本集合(設計正本也被看做是第一個的、初始的副本);最後在集中任何複本的資料或結構被更改會時啟用同步機制把改變發送並且應用於此複本集中的其他成員,使得複本集中的成員在資料或結構上保持一致性。實現同步的這一過程被稱為同步化。VB6.0為實現同步,在資料庫物件中提供了多個屬性與方法來實現這一過程,以下介紹主要的幾個屬性與方法,分別對應同步化的幾個步驟:

1.Replicable屬性:

  Replicable屬性用來使一個資料庫物件或資料庫中的表對象、查詢對象等對象成為可複製副本的,即成為設計正本。但資料庫物件並不提供Replicable這一屬性,因此首先要用CreatePropety方法來建立它,然後把它添加到對象的屬性集中,最後再給它賦值,使資料庫成為設計正本。對於資料庫物件而言,把Replicable屬性設定為“T”將使資料庫物件成為可複製的。以下代碼將使VB6.0安裝目錄下附帶的Nwind.mdb資料庫成為一個設計正本(為確保安全建議在操作前備份這一庫檔案):

Private Sub Command1_Click()
Dim dbNwind As Database
'如果末引用DAO則一定要先引用
Dim prpNew As Property
Set dbNwind = OpenDatabase("Nwind.mdb", True)
With dbNwind
 '建立Replicable屬性,如果已經存在該屬性則程式略過這一步
 On Error Resume Next
 Set prpNew = .CreateProperty("Replicable", dbText, "T")
 .Properties.Append prpNew
 '設定資料庫的Replicable屬性為True
 .Properties("Replicable") = "T"
 .Close
End With
End Sub

2.MakeReplica方法:

  MakeReplica方法從設計正本複製出一個新的完全副本。其文法為:database.MakeReplica replica, description, options,其中replica是代表一個新副本路徑名稱的字串;description是對正在建立的新副本的一個描述字串;options是一個可選項,可以是dbRepMakePartial常量(建立一個部分複本)或dbRepMakeReadOnly常量(防止使用者修改新副本中的可複製對象),如果要建立的是一個唯讀式的部分複本,則要加入參數常量 dbRepMakeReadOnly + dbRepMakePartial 。
  在第一個例子中,在關閉資料庫之前加入代碼:.MakeReplica "NwReplica", "replica of nwind.mdb",則從Nwind.mdb設計正本複製出一個名為NwReplica.mdb的副本,位置在Nwind.mdb同一目錄中。以下是一個通過傳遞參數的形式,在實際應用中可供靈活調用的函數,每調用該函數一次即可實現建立一個副本:

Function MakeAdditionalReplica(strReplicableDB As String, strNewReplica As String, intOptions As Integer) As Integer
Dim dbsTemp As Database
On Error GoTo ErrorHandler
Set dbsTemp = OpenDatabase(strReplicableDB)
' 如果在調用此函數時,intOptions處末給出參數, 則忽略該參數項,
'預設建立一個完全的、可讀/寫的副本,否則就利用提供的參數按要求建立副本
If intOptions = 0 Then
 dbsTemp.MakeReplica strNewReplica, "Replica of " & strReplicableDB
Else
 dbsTemp.MakeReplica strNewReplica, "Replica of " & strReplicableDB, intOptions
End If
dbsTemp.Close
ErrorHandler:
Select Case Err
 Case 0:
  MakeAdditionalReplica = 0
  Exit Function
 Case Else:
  MsgBox "Error " & Err & " : " & Error
  MakeAdditionalReplica = Err
 Exit Function
End Select
End Function

3.Synchronize方法:

  Synchronize方法使兩個完全副本(包括設計正本)同步化。其文法為:database.Synchronize pathname, exchange。其中pathname為要同步的目標副本的路徑名稱字串(串中的 .mdb副檔名可省略);exchange用來標識兩個資料庫之間的同步方向(如表一),這是一個可選項,預設為表中的第三個選項,即雙向交換。利用表中第四個dbRepSyncInternet常量選項,還可對通過Internet互聯的資料庫進行同步化,
這時要將代表本網路徑選項pathname用URL地址來代替。

表一、同步化方向常量
常量        同步化方向
DbRepExportChanges 從資料庫到副本路徑名稱
DbRepImportChanges 從副本路徑名稱到資料庫
DbRepImpExpChanges 雙向交換改變(預設)
DbRepSyncInternet 在通過Internet路徑串連的資料庫之間傳遞改變


  在同步化操作之前,要確保已經利用 Replicable屬性使一個資料庫初始出設計正本,並且利用MakeReplica方法複製出了一個以上的副本。
  以下通過在第一個例子添加的副本複製語句之後,加入如下語句:.Synchronize "NwReplica.mdb", dbRepExportChanges,實現把資料庫Nwind的設計正本的任何改變傳遞給副本 NwReplica。我們可以在Nwind.mdb庫中改變一些資料內容,然後再運行這一例子,我們會發現Nwind.mdb庫的改變已經反映在NwReplica.mdb這一副本中了。
  以上語句實現從資料庫到副本路徑名稱的同步(把設計正本的資料或結構改變傳遞給副本),把dbRepExportChanges常量改為dbRepImportChanges和dbRepImpExpChanges可分別實現從副本路徑名稱到資料庫(資料庫接收副本上的改變)以及雙向交換(兩者間的雙向資料傳遞)同步。
  Synchronize方法還可對通過Internet互聯的資料庫進行同步化,以下語句實現本機資料庫正本與位於Internet伺服器上的一個副本同步化:dbNwind.Synchronize "www.mycompany.myserver.com" & "/files/NwReplica.mdb", dbRepImpExpChanges + dbRepSyncInternet

4.PopulatePartial 方法:

  上面介紹利用Synchronize方法使兩個完全副本同步化,不會出現問題,但如果用一個完全副本來同步一個部分複本,因為部分複本是由副本過濾器來從完全副本來過濾重建的,因此可能在部分複本中產生所謂的“孤立”記錄,即這些記錄不能再與其他副本保持同步。要解決這一問題引入了另一個稱為PopulatePartial的方法,該方法與Synchronize方法類似,只不過它是實現部分複本與完全副本的同步,在同步時,首先清除部分複本中的所有記錄,然後根據當前副本的過濾器來重建部分複本,這樣就解決了“孤立”記錄的問題。其文法為:database.PopulatePartial dbname。dbname是完全副本的路徑名稱。由於篇幅所限以及其與Synchronize方法的相似性,因此在此不再累述,更詳細的描述請參閱相關的線上說明


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。