AddNew 方法
创建可更新 Recordset 对象的新记录。
语法
recordset.AddNew FieldList, Values
参数
FieldList 可选。新记录中字段的单个名称、一组名称或序号位置。
Values 可选。新记录中字段的单个或一组值。如果 Fields 是数组,那么 Values 也必须是有相同成员数的数组,否则将发生错误。字段名称的次序必须与每个数组中的字段值的次序相匹配。
说明
使用 AddNew 方法创建和初始化新记录。通过 adAddNew 使用 Supports 方法可验证是否能够将记录添加到当前的 Recordset 对象。
在调用 AddNew 方法后,新记录将成为当前记录,并在调用 Update 方法后继续保持为当前记录。如果 Recordset 对象不支持书签,当移动到其他记录时将无法对新记录进行访问。是否需要调用 Requery 方法访问新记录则取决于所使用的游标类型。
如果在编辑当前记录或添加新记录时调用 AddNew,ADO 将调用 Update 方法保存任何更改并创建新记录。
AddNew 方法的行为取决于 Recordset 对象的更新模式以及是否传送 Fields 和 Values 参数。
在立即更新模式(调用 Update 方法时提供者会立即将更改写入基本数据源)下,调用不带参数的 AddNew 方法可将 EditMode 属性设置为 adEditAdd。提供者将任何字段值的更改缓存在本地。调用 Update 方法可将新记录传递到数据库并将 EditMode 属性重置为 adEditNone。如果传送了 Fields 和 Values 参数,ADO 则立即将新记录传递到数据库(无须调用 Update),且 EditMode 属性值没有改变 (adEditNone)。
在批更新模式(提供者缓存多个更改并只在调用 UpdateBatch 时将其写入基本数据源)下,调用不带参数的 AddNew 方法可将 EditMode 属性设置为 adEditAdd。提供者将任何字段值的更改缓存在本地。调用 Update 方法可将新的记录添加到当前记录集并将 EditMode 属性重置为 adEditNone,但在调用 UpdateBatch 方法之前提供者不将更改传递到基本数据库。如果传送 Fields 和 Values 参数,ADO 则将新记录发送给提供者以便缓存;需要调用 UpdateBatch 方法将新记录传递到基本数据库。
如果 Unique Table 动态属性被设置,并且 Recordset 是对多个表执行 JOIN 操作的结果,那么,AddNew 方法只能将字段插入到由 Unique Table 属性所命名的表中。
Append 方法
将对象追加到集合中。如果集合是 Fields,可以先创建新的 Field 对象然后再将其追加到集合中。
语法
collection.Append object
fields.Append Name, Type, DefinedSize, Attrib
参数
collection 集合对象。
fields Fields 集合。
object 对象变量,代表所要追加对象。
Name 字符串,新 Field 对象的名称,不得与 fields 中的任何其他对象同名。
Type DataTypeEnum 类型,其默认值为 adEmpty。新字段的数据类型。
DefinedSize 可选,长整型,指示新字段的定义大小(以字符或字节为单位)。该参数的默认值源于 Type (默认的 Type 为 adEmpty,默认的 DefinedSize 未指定)。
Attrib 可选,FieldAttributeEnum,其默认值是 adFldDefault。指定新字段的属性。如果该值未指定,字段将包含源于 Type 的属性。
参数
在集合上使用 Append 方法可将对象添加到该集合,此方法仅在 Command 对象的 Parameters 集合上有效。在将 Parameter 对象追加到 Parameters 集合中之前必须设置其 Type 属性。如果选定了变长数据类型,则必须将 Size 属性设置为大于零的值。
通过对参数作出说明,可以最大程度地减少对提供者的调用,进而在使用存储过程或参数化查询时提高性能,但必须了解与所要调用的存储过程或参数化查询相关联的参数属性。使用 CreateParameter 方法可创建具有适当属性设置的 Parameter 对象,而使用 Append 方法则可将它们添加到 Parameters 集合。这样可以不必调用参数信息的提供者而设置和返回参数值。如果写到不提供参数信息的提供者,则必须使用该方法手工填写 Parameters 集合以便能够完全使用参数。
字段
如果在调用 fields.Append 方法前您没有设置 CursorLocation 属性,当使用 Open 方法打开 Recordset 时,CursorLocation 将被自动设置为 adUseClient。
对打开的 Recordset 或已设置 ActiveConnection 属性的 Recordset,调用其 fields.Append 方法将引发运行时错误。只能将字段追加到没有打开并且尚未连接到数据源的 Recordset。一般地,通过 CreateRecordset 方法或通过将新 Recordset 对象显式赋给对象变量所创建的都是新 Recordset 对象。
AppendChunk 方法
将数据追加到大型文本、二进制数据 Field 或 Parameter 对象。
语法
object.AppendChunk Data
参数
object Field 或 Parameter 对象
Data 变体型,包含追加到对象中的数据。
说明
使用 Field 或 Parameter 对象的 AppendChunk 方法可将长二进制或字符数据填写到对象中。在系统内存有限的情况下,可以使用 AppendChunk 方法对长整型值进行部分而非全部的操作。
字段
如果 Field 对象 Attributes 属性中的 adFldLong 位被设置为真,则可以对该字段使用 AppendChunk 方法。
在 Field 对象上的第一个 AppendChunk 调用将数据写入字段,覆盖任何现有的数据,随后的 AppendChunk 调用则添加到现有数据。如果将数据追加到一个字段,然后设置或读取当前记录中另一个字段的值,ADO 则认为已将数据追加到第一个字段。如果在第一个字段上再次调用 AppendChunk 方法,那么 ADO 将调用解释为新的 AppendChunk 操作并覆盖现有数据。访问其他 Recordset 对象(并非第一个 Recordset 对象的复制品)中的字段将不会破坏 AppendChunk 操作。
调用 Field 对象的 AppendChunk 时如果没有当前记录,将发生错误。
参数
如果 Parameter 对象 Attributes 属性中的 adFldLong 位被设置为真,则可以对该参数使用 AppendChunk 方法。
Parameter 对象上的第一个 AppendChunk 调用将数据写入参数,覆盖任何现有数据,随后 Parameter 对象上的 AppendChunk 调用可添加到现有的参数数据中。传送空值的 AppendChunk 调用则放弃所有的参数数据。
BeginTrans、CommitTrans 和 RollbackTrans 方法
这些事务方法按如下方式管理 Connection 对象中的事务进程:
BeginTrans - 开始新事务。
CommitTrans - 保存任何更改并结束当前事务。它也可能启动新事务。
RollbackTrans - 取消当前事务中所作的任何更改并结束事务。它也可能启动新事务。
语法
level = object.BeginTrans()
object.BeginTrans
object.CommitTrans
object.RollbackTrans
返回值
BeginTrans 可以作为函数调用,用于返回指示事务嵌套层次的长整型变量。
参数
object Connection 对象。
Connection
如果希望以独立单元保存或取消对源数据所做的一系列更改,请使用这些具有 Connection 对象的方法。例如在货币转帐时,必须从帐户中减去某个数额并将其对等数额添加到另一个帐户。无论其中的哪个更新失败,都将导致帐户收支不平衡。在打开的事务中进行这些更改可确保只能选择进行全部更改或不作任何更改。
注意 并非所有提供者都支持事务。需验证提供者定义的属性“Transaction DDL”是否出现在 Connection 对象的 Properties 集合中,如果在则表示提供者支持事务。如果提供者不支持事务,调用其中的某个方法将返回错误。
一旦调用了 BeginTrans 方法,在调用 CommitTrans 或 RollbackTrans 结束事务之前,提供者将不再立即提交所作的任何更改。
对于支持嵌套事务的提供者来说,调用已打开事务中的 BeginTrans 方法将开始新的嵌套事务。返回值将指示嵌套层次:返回值为 1 表示已打开顶层事务(即事务不被另一个事务所嵌套),返回值为 2 表示已打开第二层事务(嵌套在顶层事务中的事务),依次类推。调用 CommitTrans 或 RollbackTrans 只影响最新打开的事务;在处理任何更高层事务之前必须关闭或回卷当前事务。
调用 CommitTrans 方法将保存连接上打开的事务中所做的更改并结束事务。调用 RollbackTrans 方法还原打开事务中所做的更改并结束事务。在未打开事务时调用其中任何一种方法都将引发错误。
取决于 Connection 对象的 Attributes 属性,调用 CommitTrans 或 RollbackTrans 方法都可以自动启动新事务。如果 Attributes 属性设置为 adXactCommitRetaining,提供者在 CommitTrans 调用后会自动启动新事务。如果 Attributes 属性设置为 adXactAbortRetaining,提供者在调用 RollbackTrans 之后将自动启动新事务。
远程数据服务
BeginTrans、CommitTrans 和 RollbackTrans 方法在客户端 Connection 对象上无效。
CreateObject 方法 (RDS)
创建目标业务对象的代理并返回指向它的指针。代理将数据打包并调度到服务器端的通讯模块,以便与业务对象通讯来通过 Internet 发送请求和数据。对于进程内的组件对象则不使用代理,而只提供指向对象的指针。
语法
远程数据服务支持下列协议:HTTP、HTTPS(通过安全套接字层的 HTTP)、DCOM 和进程内。
协议
语法
HTTP
Set object = DataSpace.CreateObject("ProgId", "http://awebsrvr")
HTTPS
Set object = DataSpace.CreateObject("ProgId", "https://awebsrvr")
DCOM
Set object = DataSpace.CreateObject("ProgId", "machinename")
进程内
Set object = DataSpace.CreateObject("ProgId", "")
参数
Object 对象变量,用于计算在 ProgID 中指定类型的对象。
DataSpace 对象变量,代表用于创建新对象实例的 RDS.DataSpace 对象。
ProgID 字符串,编程 ID, 用于标识实现应用程序业务规则的服务器端业务对象。
awebsrvr 或 machinename 字符串,代表标识 Internet Information Server (IIS) Web 服务器的 URL,服务器业务对象实例在该服务器上创建。
说明
HTTP 协议是标准的 Web 协议;HTTPS 是安全 Web 协议。在运行无 HTTP 的局域网时可使用 DCOM 协议。进程内协议是本地的动态链接库 (DLL),不使用网络。