Actualizar Todos los registros de una Tabla a Otra Tabla

Necesito de su ayuda en la creación de un Procedimiento que ejecute una Consulta de actualización (Comando UPDATE) de todos los registro de una Tabla1 a una Tabla2, esto como una Opción de Importar o en su defecto Exportar Registros entre tablas algo como esto:

 DoCmd.RunSQL "UPDATE Tabla1 SET Todos los Campos

WHERE CampoTabla1 = CampoTabla2

Realice un Procedimiento con el comando INSERT de esta manera la Tabla de destino no debe contener Registros (Tabla2)

CurrentDb.Execute "INSERT INTO Tabla1 IN '" & CurrentProject.Path & "\Base Prueba.accdb' SELECT * FROM Tabla2", dbFailOnError

MsgBox "Tabla copiada correctamente", vbInformation, "Aviso"

2 Respuestas

Respuesta
1

Si las tablas son copias fieles (mismo numero de campos, tipos y nombres), la opción correcta es insertar los nuevos y después actualizar todos.
Hacer el procedimiento en otro orden dará error al intentar actualizar los que aún no existan.

Sobre la actualización: lo adecuado seria actualizar aquellos campos que pudieran tener la opción de ser modificados, los no modificables no tiene sentido practico.
Posiblemente alguien ponga en cuestión la actualización sin condiciones, si tenemos en cuenta que los que sean iguales simplemente 'se refrescaran' y los diferentes tendrán que ser actualizados (o esa es la intención).

De acuerdo a tu repuesta, debería realizar 2 Procedimientos INSERT y Luego UPDATE, con el primero si existe el registro emitirá un ERROR o Advertencia, en el segundo como actualizar Varios registros en un solo Proceso ?????  como ejemplo cual sería estos dos Procedimientos...., son varios registros que voy Insertar o Actualizar desde la Tabla1 a la Tabla2

Acaro mi respuesta:

1.- La de inserción
(Porque si se intenta actualizar datos que no existen dará error)

2.- La de actualización
(A los registros que no lo necesiten tampoco les hará daño)

Nota:
La de actualización solo deberá actualizar campos que permitan cambios
Normalmente suele haber datos que no cambian tras la creación del registro, actualizarlos es tiempo perdido.

Nada impide que tras sincronizar A en B, se repita el proceso y se sincronice B en A

Respuesta
1

Utilice si quiere DAO y recorra la primera tabla con algo como:

Dim rs as recordset

Set rs=currentdb.openrecordset("tabla1")

Do until rs.eof

 Currentdb.execute "INSERT INTO tabla2(campo1, campo2) VALUES(" & rs!campotabla1 & ","  & rs!campo2 & ")"

rs.movenext

Loop

rs.close

Set rs=Nothing

Es una idea disculpe si hay algo mal porque le respondo desde mi móvil

Muchas Gracias amigo Eduardo, siempre atento a  prestar ayuda,  te explico un poco más detallado, en realidad necesito en como una sincronización de todas las tablas de una base de datos a otra base de Datos las cuales están  alojada en 2 PC, pensé en un procedimiento de Importar o exportar los registros entre Tablas, tomando como ejemplo alguna de ellas luego repetir este procedimiento entre las cantidad de Tablas que posea la Base de Datos o en su defecto Procedimiento UPDATE y Luego INSERT.

José, entiendo que quiere es mantener actualizada la base de datos que están en 2 pc de tal forma que si modifica un dato en el PC1 este se actualice en el PC2. Access no puede sincronizar 2 bases de datos esta es una de las grandes desventajas de trabajar en Access. Esto se puede hacer en PostgreSQL (servidor de datos que utilizo), pero para no tener que hacerlo en el servidor alojo la base de datos en la nube y así puede actualizar desde cualquier parte del mundo y sigo teniendo la información actualizada. Le dejo este link para que se haga una idea, aunque sé que de pronto sus conocimientos no le permitan comprenderlo le dejo la idea.

https://youtu.be/W0M8u1VwOjU 

Son en total 5 videos, el último video explica como descargar e instalar en su PC el demo, el cual consiste en como instalar el demo y entrar a mi base de datos que esta alojada en la nube, puede ingresar durante 10 días y crear 5 clientes. Esto no estaba explicado en Youtube. Ahora si quiere convertir su aplicación a la nube escríbame a mi correo [email protected]  y hablamos.

Me atrevo a decir que los demás "expertos" que responden en este foro no tienen conocimientos de trabajar con Access-PostgreSQL y la nube, se quedaron con las limitaciones del Access. Lo digo por muchas de las respuestas que dan, las cuales en un entorno multiusuario no sirven, esta ha sido mi polémica.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas