Copiar datos de una tabla A a otra tabla B, manteniendo los datos existentes en B

Se trata de un control de cobros de una sociedad, de tal manera que, anualmente se actualice la tabla B desde la Tabla A y que los registros que pueda haber del año anterior sigan en la tabla B. Llevo varios días intentándolo y no doy con ello. No soy nada experto y espero que alguien pueda ayudarme.

2 respuestas

Respuesta
1

Javier, quisiera decirte algo concreto pero me surgen varias preguntas, por ejemplo

1º En la tabla B, ¿sólo deben estar los registros del año anterior o los registros de todos los años anteriores?.

2º El traspaso de datos de la tabla A a la tabla B, ¿lo vas a hacer algún día del año siguiente?. Por ejemplo, supongamos que en la tabla A tienes registros del 2023. ¿Quieres qué cuando empiece 2024 te pase los registros del año 2023 de la tabla A a la tabla B? ¿O cuándo pulses un botón o...?

3º ¿Lo quieres hacer desde un formulario o desde una consulta de datos anexados?

Etc.

Gracias por tu respuesta. Se trata de controlar el pago de las cuotas anuales de los Socios. En la tabla B (1º)tiene que haber la posibilidad de que  queden registros (socios) de varios años atrás. La tabla A es el Registro General de Socios de la aplicación y es de donde voy a tomar los datos que pasarán a la taba B. Esta operación deberá hacerse todos los años a principio de año con los registros al 31 de diciembre del año anterior (si se pudiera programar ?). A medida que vayan pagando las cuotas se irán borrando registros y pasando a otra taba de histórico (esto ya lo tengo resuelto) quedando en la tabla B las cuotas impagadas del año junto a los morosos de años anteriores, sin prejuicio de que, en un momento determinado, se anulen por baja del socio.

Los registros que se traspasan Son "NumeroSocio" ,"Nombre", "Apellidos", "Telefono"   

Y  quiero que se pueda hacer desde formulario. 

Quedo a la espera de tu respuesta.         

Respuesta
1

Este código le sirve

Sub CopiarDatos()
    Dim db As DAO.Database
    Dim strSQL As String
    ' Establecer la base de datos actual
    Set db = CurrentDb()
    ' Crear la consulta de inserción
    strSQL = "INSERT INTO TablaB (Campo1, Campo2, Campo3)" _
        & " SELECT Campo1, Campo2, Campo3" _
        & " FROM TablaA" _
        & " WHERE CampoX = 'Valor'"
    ' Ejecutar la consulta de inserción
    db.Execute strSQL, dbFailOnError
    ' Liberar los recursos
    Set db = Nothing
    MsgBox "La copia de datos se ha completado correctamente.", vbInformation
End Sub

se copian los valores de Campo1, Campo2 y Campo3 de la TablaA a la TablaB utilizando una condición opcional (CampoX = 'Valor'). Ajuste los nombres de los campos y las tablas según tus necesidades.

Hola, Eduardo. En principio muchas gracias por tu respuesta pero este procedimiento no me funciona, da error "3061 en tiempo de ejecución. Pocos parámetros. Se esperaba 1", (Se pone amarilla la linea db.Execute etc)por más que miro no se donde puede estar el error. Por otra parte, y perdona mi ignorancia, no entiendo el "WHERE CampoX=Valor. Lo manejo con un botón desde formulario. La versión es 2019. Espero tu respuesta.

Si prefiere envíeme la base de datos con información ficticia a [email protected], favor comprimir la base de datos en RAR o ZIP

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas