Compartir a través de


Capítulo 4: Edición de datos

Se aplica a: Access 2013, Office 2013

En los dos capítulos anteriores, se explicaba cómo utilizar ADO para conectarse a un origen de datos, ejecutar un comando, obtener los resultados en un objeto Recordset y desplazarse dentro del conjunto de registros. Este capítulo se centra en la siguiente operación fundamental de ADO: la edición de datos.

En este capítulo, se sigue utilizando el conjunto de registros de ejemplo introducido en el capítulo 3 (con un cambio importante). El código siguiente se utiliza para abrir el conjunto de registros:

 
 . . . 
'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 
 
 
 . . . 

El cambio importante en el código consiste en establecer la propiedad CursorLocation del objeto Connection en adUseClient en la función GetNewConnection (que se muestra a continuación), lo que indica el uso de un cursor de cliente. Para obtener más información acerca de las diferencias entre cursores de cliente y de servidor, vea el Capítulo 8: Cursores y bloqueos.

El valor adUseClient de la propiedad CursorLocation mueve la ubicación del cursor desde el origen de datos (SQL Server en este caso) a la ubicación del código de cliente (la estación de trabajo de escritorio). Esta configuración obliga a ADO a invocar el Client Cursor Engine para OLE DB en el cliente para crear y administrar el cursor.

Es posible que también haya observado que el parámetro LockType del método Open se ha cambiado a adLockBatchOptimistic. De este modo, el cursor se abre en modo de proceso por lotes (el proveedor almacena varios cambios en caché y los escribe en el origen de datos subyacente cuando se llama al método UpdateBatch ). (El proveedor almacena en caché varios cambios y los escribe en el origen de datos subyacente solo cuando se llama al método UpdateBatch ). Los cambios realizados en el objeto Recordset no se actualizarán en la base de datos hasta que se llame al método UpdateBatch .

Por último, el código de este capítulo utiliza una versión modificada de la función GetNewConnection, que se presentó en el capítulo 2. Esta versión de la función devuelve ahora un cursor de cliente. La función tiene la forma:

 
'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 

En este capítulo, se tratan los temas siguientes: