** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Copiar Datos de una Tabla a otra.
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCopiar Datos de una Tabla a otra.

 Responder Responder
Autor
Mensaje
javifergavilan Ver desplegable
Nuevo
Nuevo


Unido: 25/Marzo/2020
Localización: España- Madrid
Estado: Sin conexión
Puntos: 49
Enlace directo a este mensaje Tema: Copiar Datos de una Tabla a otra.
    Enviado: 27/Marzo/2020 a las 21:24
Buenas Tardes:

Tengo dos Tablas dentro de Base de datos de Access 2013, y quiero pasar los datos de una a otra.
Quiero que al ejecutar un botón se pasen los datos de la Tabla1 a las Tabla2. Los campos se llaman igual en las dos tablas.

Tabla1
CampoA CampoB

Tabla2
CampoA CampoB

He estado busco por internet tutoriales y demás y no he encontrado nada con VBA .

Muchas Gracias de Antemano.

Un saludo.
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: en línea
Puntos: 5886
Enlace directo a este mensaje Enviado: 28/Marzo/2020 a las 00:16
Hola javifergavilan, bienvenido al foro.

 Has colgado tu pregunta en el subforo equivocado.

Visual Basic Clásico (VB3...VB6)  y  VBA son lenguajes diferentes.

Paso tu consulta al foro de Access y VBA, en unos días quitaremos la consulta del subforo de origen.


Saludos desde Tenerife.

Mi sitio_web con ejemplos Excel.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14260
Enlace directo a este mensaje Enviado: 28/Marzo/2020 a las 12:02
En principio no necesitas para nada la utilización de VBA para hacer eso: una consulta de datos anexados lo hace de un plumazo.

En VBA lo puedes hacer de 2 modos (por lo menos)

1. Ejecutar la consulta de datos anexados
CurrentDb.Execute "INSERT INTO Tabla2 (CampoA, CampoB) SELECT CampoA, CampoB FROM Tabla1",dbFailOnError

2. Abrir un par de recordsets para volcar los datos
Set rst1 = CurrentDb.OpenRecordset("SELECT * FROM TablaA",,dbReadOnly)
Set rst2 = CurrentDb.OpenRecordset("SELECT * FROM TablaB",, dbAppendOnly)
Do Until rst1.EOF
  rst2.AddNew
  rst2!CampoA = rst1!CampoA
  rst2!CampoB = rst1!CampoB
  rst2.Update
  rst1.MoveNext
Loop
rst1.Close
Set rst1 = Nothing
rst2.Close
Set rst2 = nothing

Si tuvieras más de 2 campos, puedes cambiar a un bucle For Each
Set rst1 = CurrentDb.OpenRecordset("SELECT * FROM TablaA",,dbReadOnly)
Set rst2 = CurrentDb.OpenRecordset("SELECT * FROM TablaB",, dbAppendOnly)
Do Until rst1.EOF
  rst2.AddNew
  For Each fld In rst1.Fields
    rst2.Fields(fld.name).Value = rst1.Fields(fld.Name).Value
  Next
  rst2.Update
  rst1.MoveNext
Loop
rst1.Close
Set rst1 = Nothing
rst2.Close
Set rst2 = nothing


Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
javifergavilan Ver desplegable
Nuevo
Nuevo


Unido: 25/Marzo/2020
Localización: España- Madrid
Estado: Sin conexión
Puntos: 49
Enlace directo a este mensaje Enviado: 28/Marzo/2020 a las 23:36
Buenas Noches:

Me da Error de sintaxis INSERT INTO....

CurrentDb.Execute "INSERT INTO [TWP PRINCIPAL] (Identificador,Uso,Última Configuración,Número de serie,Estado) SELECT (Identificador,Uso,Última Configuración,Número de serie,Estado) FROM TWP", dbFailOnError

Set rst1 = CurrentDb.OpenRecordset("SELECT * FROM TWP", , dbReadOnly)
Set rst2 = CurrentDb.OpenRecordset("SELECT * FROM [TWP TELEFONICA]", , dbAppendOnly)
Do Until rst1.EOF
  rst2.AddNew
  rst2!Identificador = rst1!Identificador
  rst2![Última configuración] = rst1![Última configuración]
  rst2![Número de serie] = rst1![Número de serie]
  rst2!Uso = rst1!Uso
  rst2!Estado = rst1!Estado
  rst2.Update
  rst1.MoveNext
Loop
rst1.Close
Set rst1 = Nothing
rst2.Close
Set rst2 = Nothing

Yo creo que esta escrita igual pero no se código.... No me vale con hacer una consulta porque ya tengo el código programado con esas tablas y desconozco si me funcionará igual. 
Me he encontrado con el problema de tener que copiar y pegar a mano cada vez que necesitaba hacer y a ver si así lo hace automático....

Un saludo y Gracias.
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1369
Enlace directo a este mensaje Enviado: 29/Marzo/2020 a las 20:00
Los nombres que contienen espacios hay que delimitarlos con corchetes:

CurrentDb.Execute "INSERT INTO [TWP PRINCIPAL] (Identificador,Uso,[Última Configuración],[Número de serie],Estado) SELECT (Identificador,Uso,[Última Configuración],[Número de serie],Estado) FROM TWP", dbFailOnError
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3050
Enlace directo a este mensaje Enviado: 29/Marzo/2020 a las 23:44
Con un consulta de datos anexados lo harias facil, la cuestion seria si siempre tienes que copiar todos o solo parte de los registros.
Si son todos siempre, deberias vaciar la tabla destino previamente. Si no la consulta de datos anexados deberia llevar algun filtro..

En este ejemplillo veras las dos opciones, lo de filtrar datos de una buena forma lo acabo de aprender aqui.

https://www.dropbox.com/s/4zb0682zjmt0mlg/De%20tabla%20a%20Tabla%20FILTRADOS%20OK.rar?dl=0

Saludos
Arriba
javifergavilan Ver desplegable
Nuevo
Nuevo


Unido: 25/Marzo/2020
Localización: España- Madrid
Estado: Sin conexión
Puntos: 49
Enlace directo a este mensaje Enviado: 31/Marzo/2020 a las 17:40
buenos días:

Con las Consulta se resuelve el problema y me resulta mucho más facil la copia de datos.

un saludo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable