第 4 章:编辑数据

适用于:Access 2013、Office 2013

前面两章解释了如何使用 ADO 来连接数据源,执行命令,获取 Recordset 对象中的结果以及在 Recordset 中进行导航。 本章重点介绍下一个基本 ADO 操作:编辑数据。

本章继续使用第 3 章中引入的示例 Recordset - 但有一项重要更改。 使用以下代码打开 Recordset

 
 . . . 
'BeginEditIntro 
 Dim strSQL As String 
 Dim objRs1 As ADODB.Recordset 
 
 strSQL = "SELECT * FROM Shippers" 
 
 Set objRs1 = New ADODB.Recordset 
 
 objRs1.Open strSQL, GetNewConnection, adOpenStatic, _ 
 adLockBatchOptimistic, adCmdText 
 
 ' Disconnect the Recordset from the Connection object. 
 Set objRs1.ActiveConnection = Nothing 
'EndEditIntro 
 
 
 . . . 

对代码的重要更改涉及在 GetNewConnection 函数中将 Connection 对象的 CursorLocation 属性设置为等于 adUseClient (如下所示),以指示客户端游标的使用情况。 有关客户端和服务器端游标之间的差异的详细信息,请参阅 第 8 章:了解游标和锁定

CursorLocation 属性的 adUseClient 设置会将游标位置从数据源(在本例中是 SQL Server)移动到客户端代码所指示的位置(桌面工作站)。 此设置将强制 ADO 调用客户端上的 OLE DB 客户端游标引擎来创建和管理游标。

您还可能注意到 Open 方法的 LockType 参数已更改为 adLockBatchOptimistic ,这样将在批模式下打开游标。 (提供程序会缓存多个更改,只有当您调用 UpdateBatch 方法时,才会将它们写入基础数据源。 (提供程序缓存多个更改,并且仅在调用 UpdateBatch 方法时将其写入基础数据源。) 对 Recordset 所做的更改在调用 UpdateBatch 方法之前不会在数据库中更新。

最后,本章中的代码将使用第 2 章引入的 GetNewConnection 函数版本,但会稍作修改。 该函数的这个版本现在将返回一个客户端游标。 该函数类似于:

 
'BeginNewConnection 
Public Function GetNewConnection() As ADODB.Connection 
 Dim objConn1 As ADODB.Connection 
 Set objConn1 = New ADODB.Connection 
 
 strConnStr = "Provider=SQLOLEDB;Initial Catalog=Northwind;" & _ 
 "Data Source=MySrvr;Integrated Security=SSPI;" 
 
 objConn1.ConnectionString = strConnStr 
 objConn1.CursorLocation = adUseClient 
 objConn1.Open 
 
 Set GetNewConnection = objConn1 
End Function 
'EndNewConnection 

本章包含以下主题: