¿Cómo actualizar un registro de una tabla de access con el registro de otra tabla desde un formulario?

Acudo a su amable colaboración, se me esta presentando la siguiente necesidad:

Tengo dos tablas de access tabla 1 "Programas" tabla 2 "ProgramasWeb", la aplicación que manejamos registra los datos en la tabla 1 por medio de un formulario, sin embargo necesecito que al dar clic en un botón se ingrese el mismo registro en la tabla 2, si este ya esta entonces debe actualizar los datos.

Las dos tablas tienen los mismos campos la llave primaria es el campo "ID" que es autonumérico.

Se puede decir que la tabla 1 es la principal, y la 2 es una replica que esta vinculada de otro sistema.

1 respuesta

Respuesta
2

Si el formulario está basado en la tabla Programas no necesitas guardarlo, ya que Access, por defecto, si no le dices nada en contra te guarda el registro. Vamos a suponer que tengo Tabla1 y Tabla2 iguales. Con Tabla1 hago un formulario

Si pulso el botón me deja la Tabla2 como

El código del evento Al hacer clic del botón es

Private Sub Comando7_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "Insert into tabla2(nombrecliente,ciudad,pais)values(nombrecliente,ciudad,pais)"
End Sub

lo de Docmd.setwarnings es para que no aparezca la dichosa ventanita de "Va a insertar....

También podrías borrar el botón y poner la instrucción en el evento Después de actualizar del cuadro de texto Pais.

Hola Julián, mil gracias por tu respuesta.

En efecto como lo indicas al diligenciar el formulario automáticamente se agregan los datos en la tabla 1, por lo cual solo requiero la instrucción para insertar los datos en la tabla 2.

La instrucción que me das funciona sin problema sin embargo necesito adicionar la instrucción que primero busque la llave primaria si esta no esta en la tabla 2, se realiza la inserción del registro pero si ya se encuentra debe actualizar todo el registro con los campos de la tabla 1.

El registro completo tiene 45 campos.

No dices cual es la clave primaria. Vamos a suponer que es Nombrecliente. Bastaría con poner en el botón, por ejemplo

If dcount("*","tabla2","nombrecliente='" & me.nombrecliente & "'") then

Msgbox"Ese cliente ya está registrado en la tabla2 por tanto se actualizaran los campos", vbokonly,"Que lo sepas"

docmd.runsql"update tabla2 set ciudad='" & me.ciudad & "', pais='" & me.pais & "',......where nombrecliente='" & me.nombrecliente & "'"

else

Docmd. Runsql"Insert into tabla2 (nombrecliente, ciudad, pais,...) values(nombrecliente, ciudad, pais,...)

end if

Aunque teniendo en cuenta que mencionas que son 45 campos, te diría que casi es mejor hacer dos consultas, una de actualización y otra de datos anexados.

Si quieres, repito, si quieres, mándame un mensaje (sólo el mensaje) a [email protected] y te mando un ejemplo, que es como se ve mejor.

Si lo haces, en el asunto del mensaje pon tu alias Fabian, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas