用于 OLE DB 的 Microsoft 游标服务(ADO 服务组件)

适用于:Access 2013、Office 2013

Microsoft Cursor Service for OLE DB 增加了数据提供程序的游标支持功能。 因此,用户可以从所有数据提供程序体验相对统一的功能。

Cursor Service 使动态属性可用,并增强了某些方法的行为。 例如,Optimize 动态属性允许创建临时索引,以便于某些操作的执行,如 Find 方法。

在所有情况下,Cursor Service 都支持批更新。 此外,如果数据提供程序只能提供功能不太强的游标(如静态游标),Cursor Service 还可以模拟功能较强的游标类型(如动态游标)。

关键字

要调用此服务组件,请将 RecordsetConnection 对象的 CursorLocation 属性设置为 adUseClient

connection.CursorLocation=adUseClientrecordset.CursorLocation=adUseClient

动态属性

调用 Cursor Service for OLE DB 时,会将以下动态属性添加到 Recordset 对象的 Properties 集合中。 ConnectionRecordset 对象的动态属性的完整列表在 ADO 动态属性索引中列出。 关联的 OLE DB 属性名称(如果适合)包括在 ADO 属性名后的括号中。

调用 Cursor Service 后,对某些动态属性所做的更改对基础数据源不可见。 例如,对于基础数据提供程序而言,对 RecordsetCommand Time out 属性的设置将不可见。

... 
Recordset1.CursorLocation = adUseClient 'invokes cursor service 
Recordset1.Open "authors", _ 
 "Provider=SQLOLEDB;Data Source=DBServer;User Id=usr;" & _ 
 "Password=pwd;Initial Catalog=pubs;",,adCmdTable 
Recordset1.Properties.Item("Command Time out") = 50 
' 'Command Time out' property on DBServer is still default (30). 
... 

如果应用程序需要 Cursor Service,但您需要在基础提供程序上设置动态属性,则请先设置动态属性,随后调用 Cursor Service。 Command 对象属性设置始终会被传递给基础数据提供程序,无论游标所处的位置如何。 因此,您还可以随时使用 Command 对象来设置属性。

注意

动态属性 DBPROP_SERVERDATAONINSERT 不受 Cursor Service 支持,即使受基础数据提供程序支持也是如此。

属性名称

说明

Auto Recalc
(DBPROP_ADC_AUTORECALC)

对于使用 Data Shaping Service 创建的记录集,此值指示计算列和聚合列的计算频率。 默认值 (1) 表示 Data Shaping Service 每次确定值已更改时都重新进行计算。 如果该值为 0,则仅在最初建立层次结构时对计算列或聚合列进行计算。

Batch Size
(DBPROP_ADC_BATCHSIZE)

指示在发送到数据存储区之前可以进行批处理的更新语句的数量。 批中的语句越多,往返数据存储区的次数就越少。

Cache Child Rows
(DBPROP_ADC_CACHECHILDROWS)

对于使用 Data Shaping Service 创建的记录集,此值指示是否将子记录集存储在缓存中以供以后使用。

Cursor Engine Version
(DBPROP_ADC_CEVER)

指示正在使用的 Cursor Service 的版本。

Maintain Change Status
(DBPROP_ADC_MAINTAINCHANGESTATUS)

指示用于重新同步多重表连接中的一行或多行的命令文本。

优化

指示是否应该创建索引。 当设置为 True 时,表示允许创建临时索引,以提高特定操作的执行性能。

Reshape Name

指示 Recordset 的名称。 可以在当前 Data Shaping 命令或后续的 Data Shaping 命令中引用该属性。

Resync Command

指示 Unique Table 属性生效时 Resync 方法所使用的自定义命令字符串。

Unique Catalog

指示包含 Unique Table 属性中引用的表的数据库的名称。

Unique Schema

指示 Unique Table 属性中引用的表的所有者的名称。

Unique Table

指示通过多个表创建的 Recordset 中的一个表的名称,该表可以通过插入、更新或删除操作来修改。

Update Criteria
(DBPROP_ADC_UPDATECRITERIA)

指示使用 WHERE 子句中的哪些字段来处理更新期间发生的冲突。

Update Resync(DBPROP_ADC_UPDATERESYNC)

指示 Unique Table 属性生效时,在调用 UpdateBatch 方法(及其行为)后是否要隐式调用 Resync 方法。

此外,通过将动态属性的名称指定为 Properties 集合的索引,您还可以对动态属性进行设置或检索。 例如,可以像下面这样,获取并输出 Optimize 动态属性的当前值,然后设置一个新值:

 
Debug.Print rs.Properties("Optimize") 
rs.Properties("Optimize") = True 

内置属性行为

Cursor Service for OLE DB 还会影响某些内置属性的行为。

属性名称

说明

CursorType

补充可用于 Recordset 的游标类型。

LockType

补充可用于 Recordset 的锁定类型。 可启用批更新。

Sort

指定 Recordset 排序所依据的一个或多个字段名称,以及按升序还是降序排列每个字段。

方法行为

Cursor Service for OLE DB 可启用或影响 Field 对象的 Append 方法,以及 Recordset 对象的 OpenResyncUpdateBatchSave 方法。