Te adjunto el Código de un Procedimiento Publico, con el fin de que lo puedas poner si quieres en un Módulo Estándar, pero puede ir si quieres en el propio Formulario, donde tienes ese Botón que comentas.
Public Sub AnexaActualizaProductos()
Dim StrSQL As String
Dim RegTP2 As Long, RegTP As Long, RegFinTP As Long
Dim ProdAnexados As Integer
On Error GoTo AnexaActualizaProductos_TratamientoErrores
RegTP = DCount("[Codigo]", "[T_Productos]")
RegTP2 = DCount("[Codigo]", "[T_Productos2]")
ProdAnexados = RegTP2 - RegTP
'Sondeo y comparo el Codigo en Ambas Tablas
If RegTP2 > RegTP Then
MsgBox "La Tabla de [T_Productos] se actualizará con los Añadidos", vbInformation, "MENSAJE AL USUARIO"
StrSQL = "INSERT INTO [T_Productos] SELECT [T_Productos2].* "
StrSQL = StrSQL & "FROM [T_Productos2] LEFT JOIN [T_Productos] ON [T_Productos2].Codigo = [T_Productos].Codigo "
StrSQL = StrSQL & "WHERE ((([T_Productos].Codigo) Is Null));"
CurrentDb.Execute StrSQL, dbFailOnError
RegFinTP = DCount("[Codigo]", "[T_Productos]")
If RegTP2 = RegFinTP Then
MsgBox "A la Tabla [T_Productos] se le han ANEXADO " & ProdAnexados & " Registros", vbInformation, "MENSAJE AL USUARIO"
Else
MsgBox "No se han ANEXADO " & ProdAnexados & " Registros", vbCritical, "MENSAJE AL USUARIO"
End If
Else
MsgBox "La Tabla de [T_Productos] NO se ha incrementado enNúmero de Registros", vbInformation, "TABLA CON LOS MISMOS REGISTROS"
End If
StrSQL = ""
StrSQL = "UPDATE [T_Productos] "
StrSQL = StrSQL & "LEFT JOIN [T_Productos2] "
StrSQL = StrSQL & "ON [T_Productos].Codigo = [T_Productos2].Codigo SET [T_Productos].Descripcion = [T_Productos2]![Descripcion], "
StrSQL = StrSQL & "[T_Productos].PrecioPublico= [T_Productos2]![PrecioPublico] WHERE ((([T_Productos]![Codigo])=[T_Productos2]![Codigo]));"
CurrentDb.Execute StrSQL, dbFailOnError
MsgBox "Los datos de la Tabla [T_Productos] se han actualizado con Exito", vbInformation, "TABLA ACTUALIZADA"
StrSQL = ""
AnexaActualizaProductos_Salir:
On Error GoTo 0
Exit Sub
AnexaActualizaProductos_TratamientoErrores:
MsgBox "Error " & Err.Number & " en Procedimiento.: AnexaActualizaProductos de Documento VBA: Xxxxxxxxxx (" & Err.Description & ")"
Resume AnexaActualizaProductos_Salir
End Sub 'AnexaActualizaProductos
Para el Ejemplo, a ese botón le voy a llamar >> BtnAnexaActualiza, que tendrá su própio código en el Evento Click. Será desde donde llamemos al Procedimiento de arriba
Private Sub BtnAnexaActualiza_Click()
Call AnexaActualizaProductos
End Sub
Espero no haber errado en alguna línea. Un saludo >> Jacinto