Database.PopulatePartial 方法 (DAO)
适用于:Access 2013、Office 2013
将部分副本 (replica) 中的任何更改与完整副本 (replica) 同步,清除部分副本 (replica) 中的所有记录,然后根据当前副本 (replica) 筛选器重新填充部分副本 (replica) 。 仅 (Microsoft Access 数据库引擎数据库。) 。
语法
表达式 。PopulatePartial (DbPathName)
表达式 一个表示 Database 对象的变量。
参数
名称 |
必需/可选 |
数据类型 |
说明 |
---|---|---|---|
DbPathName |
必需 |
字符串 |
要使用其中的数据填充记录的完全副本的路径和名称。 |
备注
当您将部分副本与完全副本同步时,有可能在部分副本中创建"孤立"的记录。 例如,假设你有一个 Customers 表,其 ReplicaFilter 设置为“Region = 'CA'”。 如果用户在部分副本中将客户的区域由 CA 更改为 NY,然后通过 Synchronize 方法发生同步,更改将传播到完全副本,但是部分副本中包含 NY 的记录会变为孤立的,因为它现在不满足副本筛选器条件。
若要解决孤立记录的问题,可以使用 PopulatePartial 方法。 PopulatePartial 方法类似于 Synchronize 方法,但是它将任何更改与完全副本同步,再删除部分副本中的所有记录,然后基于当前的副本筛选器重新填充部分副本。 即使未更改副本筛选器, PopulatePartial 也始终清除部分副本中的所有记录,然后基于当前筛选器重新填充部分副本。
一般而言,在创建部分副本时,以及无论何时更改副本筛选器时,都应该使用 PopulatePartial 方法。 如果应用程序更改了副本筛选器,应遵循以下步骤:
将完全副本与其中更改了筛选器的部分副本同步。
使用 ReplicaFilter 和 PartialReplica 属性对副本筛选器执行所需的更改。
调用 PopulatePartial 方法可从部分副本中删除所有记录,并从完全副本中传输符合新的副本筛选条件的所有记录。
如果副本筛选器已更改,并且在未首先调用 PopulatePartial 的情况下调用了 Synchronize 方法,则会发生可捕获的错误。
只能对已打开以便进行独占访问的部分副本调用 PopulatePartial 方法。 此外,不能从部分副本 (replica) 本身内运行的代码调用 PopulatePartial 方法。 而是应当从完全副本或另一个数据库以独占方式打开部分副本,然后调用 PopulatePartial。
注意
[!注释] 尽管 PopulatePartial 在清除和重新填充部分副本之前执行单向同步,但是,最好是仍然在调用 PopulatePartial 之前调用 Synchronize。 这是因为如果调用 Synchronize 失败,将发生可捕获的错误。 可以使用此错误决定是否继续 PopulatePartial 方法(此方法将删除部分副本中的所有记录)。 如果 PopulatePartial 由其自身调用,并且在同步记录时出错,则仍然会清除部分副本中的记录,这可能是不希望得到的结果。
示例
以下示例在更改副本筛选器后使用 PopulatePartial 方法。
Sub PopulatePartialX()
Dim tdfCustomers As TableDef
Dim strFilter As String
Dim dbsTemp As Database
' Open the partial replica in exclusive mode.
Set dbsTemp = OpenDatabase("F:\SALES\FY96CA.MDB", True)
With dbsTemp
Set tdfCustomers = .TableDefs("Customers")
' Synchronize with full replica
' before setting replica filter.
.Synchronize "C:\SALES\FY96.MDB"
strFilter = "Region = 'CA'"
tdfCustomers.ReplicaFilter = strFilter
' Populate records from the full replica.
.PopulatePartial "C:\SALES\FY96.MDB"
.Close
End With
End Sub