Edición de datos
Hemos explicado cómo usar ADO para conectarse a un origen de datos, ejecutar un comando, obtener los resultados en un objeto Recordset y navegar dentro del objeto Recordset. Esta sección se centra en la siguiente operación fundamental de ADO: editar datos.
En esta sección se sigue utilizando el objeto Recordset de ejemplo introducido en Examinar datos, con un cambio importante. El código siguiente se usa para abrir el objeto 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
El cambio importante en el código implica establecer la propiedad CursorLocation del objeto Connection igual a adUseClient en la función GetNewConnection (que se muestra en el ejemplo siguiente), que indica el uso de un cursor de cliente. Para obtener más información sobre las diferencias entre los cursores del lado cliente y del lado servidor, consulte Descripción de los 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 motor de cursores de cliente para OLE DB en el cliente con el fin de crear y administrar el cursor.
Es posible que también haya observado que el parámetro LockType del método Open ha cambiado a adLockBatchOptimistic. Se abre el cursor en modo por lotes. (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 esta sección usa una versión modificada de la función GetNewConnection. Esta versión de la función ahora devuelve un cursor del lado cliente. La función tiene este aspecto:
'BeginNewConnection
Public Function GetNewConnection() As ADODB.Connection
On Error GoTo ErrHandler:
Dim objConn As New ADODB.Connection
Dim strConnStr As String
strConnStr = "Provider='SQLOLEDB';Initial Catalog='Northwind';" & _
"Data Source='MySqlServer';Integrated Security='SSPI';"
objConn.ConnectionString = strConnStr
objConn.CursorLocation = adUseClient
objConn.Open
Set GetNewConnection = objConn
Exit Function
ErrHandler:
Set objConn = Nothing
Set GetNewConnection = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Function
'EndNewConnection
Esta sección contiene los temas siguientes.