TableDef.ReplicaFilter 属性 (DAO)
适用于:Access 2013、Office 2013
在部分副本 (replica) 中的 TableDef 对象上设置或返回一个值,该值指示哪些记录子集从完整副本 (replica) 复制到该表。 (仅适用于 Microsoft Access 工作区。
语法
表达式 。ReplicaFilter
表达式 一个表示 TableDef 对象的变量。
说明
设置或返回值是一个 String 或 Boolean,用于指示复制了哪部分记录,如下表所示:
值 |
说明 |
---|---|
字符串 |
为了从完全副本中复制,部分副本表中的记录所必须满足的条件。 |
True |
复制所有记录。 |
False |
(默认)不复制任何记录。 |
该属性类似于 SQL WHERE 语句(不含 WHERE 一词),但是不能在条件中指定子查询、聚合函数(如 Count)或用户定义的函数。
只能在完全副本与部分副本之间同步数据。 不能在两个部分副本之间同步数据。 另外,对于部分复制,您可以设置关于复制哪些记录的限制,但是不能指出复制哪些字段。
通常,在想要复制另一组记录时重置副本筛选器。 例如,当一个销售代表临时接替另一个销售代表所负责的区域时,数据库应用程序可以临时复制这两个区域的数据,然后恢复使用上一个筛选器。 在这种情况下,应用程序重置 ReplicaFilter 属性,然后重新填充部分副本。
如果应用程序更改了副本筛选器,您应当执行下列步骤:
使用 Synchronize 方法将完全副本与更改了筛选器的部分副本同步。
使用 ReplicaFilter 属性对副本筛选器进行必要的更改。
使用 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