El siguiente ejemplo le mostrará cómo trabajar con un objeto Recordset desconectado, insertando, modificando y eliminando registros con un control DataGrid, actualizando los datos de la tabla mediante la ejecución de una actualización por lotes.
El ejemplo trabajará con una copia de la tabla Clientes de la base de datos Neptuno, de esta forma impedimos que la tabla original queda dañada.
Para ejecutar el ejemplo necesitará insertar un control DataGrid y dos controles CommandButton en el formulario de inicio del proyecto. Copie y pegue el siguiente código en la sección Declaraciones del formulario de inicio del proyecto.
Option Explicit
' Declaración de variables objeto a nivel del
formulario
Private mCnn
As ADODB.Connection
Private mRst
As ADODB.Recordset
Private
Sub Command1_Click()
' Conectamos el Recordset para
proceder a la
' actualización
Set
mRst.ActiveConnection = mCnn
' Actualizamos el conjunto de
datos
mRst.UpdateBatch
' Desconectamos de nuevo el
objeto Recordset
Set
mRst.ActiveConnection =
Nothing
End
Sub
Private
Sub Command2_Click()
If (MsgBox("¿Desea
eliminar la tabla temporal?", _
vbInformation + vbYesNo) = vbYes)
Then
'
'
Eliminamos la tabla ...
mCnn.Execute "DROP TABLE Tabla1"
'
Descargamos el formulario
Unload Me
End
If
End
Sub
Private
Sub Form_Load()
On
Error
GoTo ErrFormLoad
' Configuramos los distintos
controles del formulario
Command1.Caption = "Actualizar"
Command2.Caption = "Eliminar tabla temporal"
With DataGrid1
.AllowAddNew =
True
.AllowDelete =
True
End
With
' Creamos un nuevo objeto
Connection
Set mCnn =
New ADODB.Connection
' Abrimos la conexión
With mCnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source =
C:\Mis documentos\Neptuno.mdb"
.Open
End
With
' Creamos la
tabla de prueba, copiando la estructura
' de la tabla Clientes
mCnn.Execute "SELECT * INTO Tabla1 FROM Clientes WHERE 1=0"
' Creamos un nuevo objeto
Recordset
Set mRst =
New ADODB.Recordset
' Configuramos y abrimos el
Recordset
With mRst
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockBatchOptimistic
.Open "Tabla1", mCnn, , , adCmdTable
End
With
' Enlazamos el
control DataGrid con el objeto Recordset
Set
DataGrid1.DataSource = mRst
' Desconectamos el objeto
Recordset
Set
mRst.ActiveConnection =
Nothing
Exit
Sub
ErrFormLoad:
If (Err.Number =
-2147217900)
Then
If
(MsgBox("La tabla ya existe. ¿Desea eliminarla?", _
vbInformation
+ vbYesNo) = vbYes)
Then
'
' Eliminamos
la tabla ...
mCnn.Execute
"DROP TABLE Tabla1"
' ... y la volvemos a crear
Resume
End
If
End
If
Resume
Next
End
Sub
Private
Sub Form_Unload(Cancel
As Integer)
mRst.Close
mCnn.Close
Set mRst =
Nothing
Set mCnn =
Nothing
End Sub
Enrique Martínez Montejo - 2004
NOTA: La información contenida en este artículo, así como el código fuente incluido en el mismo, se proporciona COMO ESTÁ, sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo explicado, recomendado o sugerido en el presente artículo.
NOTE: The information contained in this article and source code included therein, is provided AS IS without warranty of any kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this article.