Name 属性 — 动态
指定 Recordset 对象的名称。
返回值
返回作为 Recordset 名称的字符串值。
说明
名称在连接期间或在 Recordset 关闭之前持久存在。
Name 属性主要为了用于 Microsoft Data Shaping Service for OLE DB 服务提供者的重构形特性。要参与重构形,名称必须是唯一的。
该属性是只读的,但在创建 Recordset 时可以间接设置。例如,如果使用 SHAPE 命令短语创建 Recordset,并使用“AS”关键字命名别名,则别名将被赋给 Name 属性。如果别名未声明,或别名与现有名称相冲突,则 Name 属性将由 Shape 提供者生成的名称确定。
当要在 SHAPE 命令中引用 Recordset 时,请使用 Name 属性,但由于它是由 MSDataShape 生成的,所以用户不知道其名称。这时,应使用 Name 属性返回的字符串来组成命令,以此生成 SHAPE 命令。
当 CursorLocation 属性设置为 adUseClient 时,Name 是追加到 Recordset 对象的 Properties 集合中的动态属性。
Unique Table、Unique Schema、Unique Catalog 属性 — 动态
使用户能够直接控制在通过对多个基本表执行 JOIN 操所得到的 Recordset 中的特定基本表的修改。
Unique Table 指定一个允许进行更新、插入和删除的基本表的名称。
Unique Schema 指定模式,即表的所有者的名称。
Unique Catalog 指定目录,即包含表的数据库的名称。
设置和返回值
设置或返回字符串值,该值是表、模式或目录的名称。
说明
所要的基本表通过其目录、模式和表名唯一标识。设置 Unique Table 属性后,可使用 Unique Schema 或 Unique Catalog 属性的值查找基本表。在设置 Unique Table 属性之前需要设置 Unique Schema 和 Unique Catalog 属性的其中一个属性或同时设置两个属性,但这不是必须的。
Unique Table 的主键被用作整个 Recordset 的主键。该键可用于任何需要主键的方法。
设置 Unique Table 后,AddNew、Delete、Resync、Update 和 UpdateBatch 方法只能影响到所命名的表。
如果找不到唯一的基本表,将出现运行时错误。
当把 CursorLocation 属性设置为 adUseClient 时,这些动态属性均被追加到 Recordset 对象的 Properties 集合中。
Resync Command 属性 — 动态
指定用户提供的命令字符串,Resync 方法发出该字符串用于刷新在由 Unique Table 动态属性所命名的表中的数据。
设置和返回值
设置或返回字符串,是命令字符串。
说明
Recordset 对象是对多个基本表执行 JION 操作的结果。受影响的行取决于 Resync 方法的 AffectRecords 参数。如果没有设置 Unique Table 和 Resync Command 属性,将执行标准的 Resync 方法。
Resync Command 属性的命令字符串是唯一标识正在被刷新的行的参数化命令或存储过程,并返回包含相同列的数目和顺序的单个行作为要刷新的行。命令字符串包含在 Unique Table 中每个主键列的参数,否则将返回运行时错误。参数将以要刷新行的主键值自动填充。
两个基于 SQL 的范例如下:
1) Recordset 由命令定义:
SELECT * FROM Customers JOIN Orders ON
Customers.CustomerID = Orders.CustomerID
WHERE city = ‘Seattle’
ORDER BY CustomerID
Resync Command 属性设置为:
"SELECT * FROM
(SELECT * FROM Customers JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
city = ‘Seattle’ ORDER BY CustomerID)
WHERE Orders.OrderID = ?"
Unique Table 为 Orders,其主键 OrderID 被参数化。子选择提供简单的方法,在程序中确保返回的列具有与使用原始命令相同的数目和顺序。
2) Recordset 由存储过程定义:
CREATE PROC Custorders @CustomerID char(5) AS
SELECT * FROM Customers JOIN Orders ON
Customers.CustomerID = Orders.CustomerID
WHERE Customers.CustomerID = @CustomerID
Resync 方法应该执行如下存储过程:
CREATE PROC CustordersResync @ordid int AS
SELECT * FROM Customers JOIN Orders ON
Customers.CustomerID = Orders.CustomerID
WHERE Orders.ordid = @ordid
Resync Command 属性设置为:
"{call CustordersResync (?)}"
又一次,Unique Table 为 Orders,其主键 OrderID 被参数化。
当把 CursorLocation 属性设置为 adUseClient 时,Resync Command 是追加到 Recordset 对象的 Properties 集合的动态属性。
Update Resync 属性 — 动态
指定在 UpdateBatch 方法之后是否进行隐式 Resync 方法操作,以及如果这样,该操作的范围。
设置和返回值
设置或返回如下 CEResyncEnum 值之一:
常量
说明
adResyncNone
不调用 Resync。
AdResyncAutoIncrement
(默认)对所有成功插入的行调用 Resync,包括它们自动递加列的值。
adResyncConflicts
对所有因并发冲突导致更新或删除操作失败的行调用 Resync。
adResyncUpdates
对所有成功更新的行调用 Resync。
adResyncInserts
对所有成功插入的行调用 Resync,包括它们相同列的值。
adResyncAll
对出现挂起更改的每行调用 Resync。
说明
只有已设置 Unique Table 动态属性,该属性才可以应用。
adResyncAutoIncrement 和 adResyncConflicts 可以同时使用。adResyncAll、adResyncUpdates、adResyncInserts 和 adResyncConflicts 可以同时使用。
常量 adResyncConflicts 将 resync 值作为基本值存储,但不覆盖挂起的更改。
当把 CursorLocation 属性设置为 adUseClient 时,Update Resync 是追加到 Recordset 对象 Properties 集合的动态属性。