Seguidores

MIS WEBS



Mostrando entradas con la etiqueta DAO. Mostrar todas las entradas
Mostrando entradas con la etiqueta DAO. Mostrar todas las entradas

lunes, 15 de enero de 2018

RECORDSET VBA ACCES ADO O DAO



RECORDSET II



En otras ocasiones hemos visto como crear un RECORDSET con la librería ADOBD, pero es verdad que esta librería a veces me ha dado problemas con otros equipos que se conectan a la misma BBDD incluso teniendo todas las librerías activadas de forma idéntica, por eso he decido explorar otras formas de crear mis RECORDSET.


UTILIZADO ADODB


Sub CONECTAR_BASE_con_ADODB()
'creamos una conexión utilizado el objeto connection para ello creamos una variable
Dim CONECTAR As New ADODB.Connection          
Dim MiRecordset As New ADODB.RECORDSET   ' variable recorset
Dim String_id, String_DOS, String_TRES As String
Set CONECTAR = CurrentProject.Connection 'establecemos conexión con la base de datos (en este caso la actual)
Dim DATOS As String
 DATOS = "SELECT * from Tabla1"   
     MiRecordset.Open DATOS, CONECTAR
    
     Do Until MiRecordset.EOF
            
        String_id = MiRecordset!Id
        String_DOS = MiRecordset!DOS
        Strimg_TRES = MiRecordset!TRES
       
         DoCmd.SetWarnings False 'desactiva output de aviso
       
        'Consulta DCMD para insertar registros en una tabla.
        DoCmd.RunSQL "INSERT INTO Tabla2 (Id, DOS, TRES) VALUES" _
                        & " ('" & String_id & "', '" _
                        & String_DOS & "', '" _
                        & Stromg_TRES & "');"
       
        MiRecordset.MoveNext 'pasa al suiente registro
        DoCmd.SetWarnings True 'activa output de aviso
     Loop
    
    'cerarmos recordset y conexion
    MiRecordset.Close
    CONECTAR.Close
    'liberamos espacio
    Set MiRecordset = Nothing
    Set CONECTAR = Nothing

End Sub




AHORA VAMOS A PROBAR HACERLO DE OTRA FORMA, ES POSIBLE QUE SEA MÁS LIMPIA O ESO ME PARECE A MI.


Sub RECORDSET_D()

Dim string_ID, string_DOS, string_TRES As String
Dim TABLA1, TABLA2 As Recordset


Set DB = CurrentDb
Set TABLA1 = DB.OpenRecordset("Tabla1", dbOpenTable)
Set TABLA2 = DB.OpenRecordset("Tabla2", dbOpenTable)

TABLA1.MoveLast
TABLA1.MoveFirst



Do Until TABLA1.EOF
TABLA1.Edit
string_ID = TABLA1("Id")
string_DOS = TABLA1("DOS")
string_TRES = TABLA1("TRES")


TABLA2.AddNew
TABLA2("Id") = string_ID
TABLA2("DOS") = string_DOS
TABLA2("TRES") = string_TRES

TABLA2.Update
TABLA1.MoveNext
Loop
DoCmd.OpenTable "Tabla2"


End Sub




Espero que os pueda ser de utilidad 

Buscar este blog

Sandisk y Western Digital