用于 OLE DB 的 Microsoft 游标服务(ADO 服务组件)
适用于:Access 2013、Office 2013
Microsoft Cursor Service for OLE DB 增加了数据提供程序的游标支持功能。 因此,用户可以从所有数据提供程序体验相对统一的功能。
Cursor Service 使动态属性可用,并增强了某些方法的行为。 例如,Optimize 动态属性允许创建临时索引,以便于某些操作的执行,如 Find 方法。
在所有情况下,Cursor Service 都支持批更新。 此外,如果数据提供程序只能提供功能不太强的游标(如静态游标),Cursor Service 还可以模拟功能较强的游标类型(如动态游标)。
关键字
要调用此服务组件,请将 Recordset 或 Connection 对象的 CursorLocation 属性设置为 adUseClient。
connection.CursorLocation=adUseClientrecordset.CursorLocation=adUseClient
动态属性
调用 Cursor Service for OLE DB 时,会将以下动态属性添加到 Recordset 对象的 Properties 集合中。 Connection 和 Recordset 对象的动态属性的完整列表在 ADO 动态属性索引中列出。 关联的 OLE DB 属性名称(如果适合)包括在 ADO 属性名后的括号中。
调用 Cursor Service 后,对某些动态属性所做的更改对基础数据源不可见。 例如,对于基础数据提供程序而言,对 Recordset 的 Command 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 |
对于使用 Data Shaping Service 创建的记录集,此值指示计算列和聚合列的计算频率。 默认值 (1) 表示 Data Shaping Service 每次确定值已更改时都重新进行计算。 如果该值为 0,则仅在最初建立层次结构时对计算列或聚合列进行计算。 |
Batch Size |
指示在发送到数据存储区之前可以进行批处理的更新语句的数量。 批中的语句越多,往返数据存储区的次数就越少。 |
Cache Child Rows |
对于使用 Data Shaping Service 创建的记录集,此值指示是否将子记录集存储在缓存中以供以后使用。 |
Cursor Engine Version |
指示正在使用的 Cursor Service 的版本。 |
Maintain Change Status |
指示用于重新同步多重表连接中的一行或多行的命令文本。 |
指示是否应该创建索引。 当设置为 True 时,表示允许创建临时索引,以提高特定操作的执行性能。 |
|
指示 Recordset 的名称。 可以在当前 Data Shaping 命令或后续的 Data Shaping 命令中引用该属性。 |
|
指示 Unique Table 属性生效时 Resync 方法所使用的自定义命令字符串。 |
|
指示包含 Unique Table 属性中引用的表的数据库的名称。 |
|
指示 Unique Table 属性中引用的表的所有者的名称。 |
|
指示通过多个表创建的 Recordset 中的一个表的名称,该表可以通过插入、更新或删除操作来修改。 |
|
Update Criteria |
指示使用 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 还会影响某些内置属性的行为。
属性名称 |
说明 |
---|---|
补充可用于 Recordset 的游标类型。 |
|
补充可用于 Recordset 的锁定类型。 可启用批更新。 |
|
指定 Recordset 排序所依据的一个或多个字段名称,以及按升序还是降序排列每个字段。 |
方法行为
Cursor Service for OLE DB 可启用或影响 Field 对象的 Append 方法,以及 Recordset 对象的 Open、Resync、UpdateBatch 和 Save 方法。