Seguidores

MIS WEBS



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 

No hay comentarios:

Publicar un comentario

Buscar este blog

Sandisk y Western Digital