TableDef.ReplicaFilter 属性 (DAO)

适用于:Access 2013、Office 2013

在部分副本 (replica) 中的 TableDef 对象上设置或返回一个值,该值指示哪些记录子集从完整副本 (replica) 复制到该表。 (仅适用于 Microsoft Access 工作区。

语法

表达式 。ReplicaFilter

表达式 一个表示 TableDef 对象的变量。

说明

设置或返回值是一个 StringBoolean,用于指示复制了哪部分记录,如下表所示:

说明

字符串

为了从完全副本中复制,部分副本表中的记录所必须满足的条件。

True

复制所有记录。

False

(默认)不复制任何记录。

该属性类似于 SQL WHERE 语句(不含 WHERE 一词),但是不能在条件中指定子查询、聚合函数(如 Count)或用户定义的函数。

只能在完全副本与部分副本之间同步数据。 不能在两个部分副本之间同步数据。 另外,对于部分复制,您可以设置关于复制哪些记录的限制,但是不能指出复制哪些字段。

通常,在想要复制另一组记录时重置副本筛选器。 例如,当一个销售代表临时接替另一个销售代表所负责的区域时,数据库应用程序可以临时复制这两个区域的数据,然后恢复使用上一个筛选器。 在这种情况下,应用程序重置 ReplicaFilter 属性,然后重新填充部分副本。

如果应用程序更改了副本筛选器,您应当执行下列步骤:

  1. 使用 Synchronize 方法将完全副本与更改了筛选器的部分副本同步。

  2. 使用 ReplicaFilter 属性对副本筛选器进行必要的更改。

  3. 使用 PopulatePartial 方法删除部分副本中的所有记录,然后从完全副本传输所有符合新副本筛选条件的记录。

若要删除筛选器,请将 ReplicaFilter 属性设置为 False。 如果删除所有筛选器并调用 PopulatePartial 方法,则部分副本中的所有已复制表中都不会显示任何记录。

注意

如果副本筛选器已更改,并且在未首先调用 PopulatePartial 的情况下调用了 Synchronize 方法,则会发生可捕获的错误。

示例

以下示例使用 ReplicaFilter 属性来仅复制加利福尼亚地区的客户记录。

Sub ReplicaFilterX() 
 
 ' This example assumes the current open database 
 ' is the replica. 
 Dim tdfCustomers As TableDef 
 Dim strFilter As String 
 Dim dbsTemp As Database 
 
 Set dbsTemp = OpenDatabase("Northwind.mdb") 
 Set tdfCustomers = dbsTemp.TableDefs("Customers") 
 
 ' Synchronize with full replica 
 ' before setting replica filter. 
 dbsTemp.Synchronize "C:\SALES\FY96.MDB" 
 
 strFilter = "Region = 'CA'" 
 tdfCustomers.ReplicaFilter = strFilter 
 dbsTemp.PopulatePartial "C:\SALES\FY96.MDB" 
 
 ' Now remove the replica filter (for example purposes 
 ' only). 
 tdfCustomers.ReplicaFilter = False 
 ' Repopulate the database. 
 dbsTemp.PopulatePartial "C:\SALES\DATA96.MDB" 
 
End Sub