Yo se que se puede hacer con un Recordset desconectado, encontre este ejemplo realizado con una base de datos en access, pero mi problema es que no puedo realizar el mismo procedimiento con una bd en sql server.
dejo el codigo de ejemplo
Código:
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