Necesito una rutina para copiar registros en ACCESS VB
Necesito una pequeña rutina donde pueda copiar, sin runsql, los registros de una tabla a otra que es exactamente igual, en realidad la estoy copiando de un entorno remoto a mi entorno local.
Para ello estoy utilizando los módulos
' Esta parte me borra la tabla sin poner ningun mensaje (aunque sea lenta)
DoCmd.OpenTable "local_campos", acViewNormal, acEdit
Set local_campos = CurrentDb()
LSQL = "SELECT * FROM local_campos"
Set Reg_local_campos = local_campos.OpenRecordset(LSQL)
Reg_local_campos.MoveFirst
Do Until Reg_local_campos.EOF
Reg_local_campos.Delete
Reg_local_campos.MoveNext
Loop
If Reg_local_campos.EOF Then
IND_FIN = "S"
End If
End If
DoCmd.Close acTable, "local_campos", acSaveYes
Loop
' Esta es la parte que empecé de copia
DoCmd.OpenTable "sololect_campos", acViewNormal, acReadOnly
Set Tabla_Trabajo = CurrentDb
DoCmd.OpenTable "local_campos", acViewNormal, acEdit
Set local_campos = CurrentDb
LSQL = "SELECT sololect_campos.* FROM sololect_campos "
LSQL = LSQL & "WHERE (((sololect_campos.campoe)=14 "
LSQL = LSQL & "Or (sololect_campos.campoe)=141))"
Set Reg_Tabla_Trabajo = Tabla_Trabajo.OpenRecordset(LSQL)
' Me situo en la primera a copiar
Reg_Tabla_Trabajo.MoveFirst
Do Until Reg_Tabla_Trabajo.EOF
' Creo un nuevo registro en la tabla local
Reg_local_campos.AddNew
' ¿Como le indíco donde estan los datos a copiar?
' Seria como un similar a
' Reg_local_campos() = Reg_Tabla_Trabajo()
' no se si hace falta dar un update después.
Reg_local_campos.Update
Reg_Tabla_Trabajo.MoveNext
Loop
If Reg_local_campos.EOF Then
IND_FIN = "S"
End If
DoCmd. Close acTable, "local_campos", acSaveYes
DoCmd. Close acTable, " sololect_campos ", acSaveNo
Para ello estoy utilizando los módulos
' Esta parte me borra la tabla sin poner ningun mensaje (aunque sea lenta)
DoCmd.OpenTable "local_campos", acViewNormal, acEdit
Set local_campos = CurrentDb()
LSQL = "SELECT * FROM local_campos"
Set Reg_local_campos = local_campos.OpenRecordset(LSQL)
Reg_local_campos.MoveFirst
Do Until Reg_local_campos.EOF
Reg_local_campos.Delete
Reg_local_campos.MoveNext
Loop
If Reg_local_campos.EOF Then
IND_FIN = "S"
End If
End If
DoCmd.Close acTable, "local_campos", acSaveYes
Loop
' Esta es la parte que empecé de copia
DoCmd.OpenTable "sololect_campos", acViewNormal, acReadOnly
Set Tabla_Trabajo = CurrentDb
DoCmd.OpenTable "local_campos", acViewNormal, acEdit
Set local_campos = CurrentDb
LSQL = "SELECT sololect_campos.* FROM sololect_campos "
LSQL = LSQL & "WHERE (((sololect_campos.campoe)=14 "
LSQL = LSQL & "Or (sololect_campos.campoe)=141))"
Set Reg_Tabla_Trabajo = Tabla_Trabajo.OpenRecordset(LSQL)
' Me situo en la primera a copiar
Reg_Tabla_Trabajo.MoveFirst
Do Until Reg_Tabla_Trabajo.EOF
' Creo un nuevo registro en la tabla local
Reg_local_campos.AddNew
' ¿Como le indíco donde estan los datos a copiar?
' Seria como un similar a
' Reg_local_campos() = Reg_Tabla_Trabajo()
' no se si hace falta dar un update después.
Reg_local_campos.Update
Reg_Tabla_Trabajo.MoveNext
Loop
If Reg_local_campos.EOF Then
IND_FIN = "S"
End If
DoCmd. Close acTable, "local_campos", acSaveYes
DoCmd. Close acTable, " sololect_campos ", acSaveNo
1 respuesta
Respuesta de luis45ccs
1