Hola Ruben:
La opción que te propone Rick es realmente la mejor solución. Aunque no te lo explica claramente, se trata de trabajar con controles Independientes, cargando los datos desde la tabla o consulta al formulario mediante Recordset ADO o DAO y después grabando los datos desde el formulario a la tabla de la misma forma, permitiéndote grabar o cancelar los posibles cambios realizados, pero eso requiere unos conocimientos en programación VBA que posiblemente no tengas. Sin complicarte la vida de momento, te sugiero que lo intentes de esta forma:
Le pones al formulario como Origen del Registro la Tabla o Consulta donde estén los datos e igualmente le pones a los campos los Origenes del Control de los campos de la tabla (como lo tienes ahora) y luego usas el Procedimiento de Evento "Antes de Actualizar" del formulario:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim Aviso As Integer
Aviso = MsgBox("¿ Desea grabar los cambios realizados ?", vbQuestion + vbYesNo + vbDefaultButton1, "Grabar cambios")
If Aviso = vbNo Then
'Al cambiar de registro cancela los cambios si pulsamos 'No'
DoCmd.RunCommand acCmdUndo
MsgBox "No se han grabado los cambios realizados.", vbCritical, "Grabar cambios"
Else
'Al cambiar de registro graba los cambios si pulsamos 'Si'
MsgBox "Los cambios realizados han sido grabados.", vbInformation, "Grabar cambios"
End If
End Sub
El comando "DoCmd.RunCommand acCmdUndo" lo que hace es deshacer los cambios realizados en un registro o si se trata de un registro nuevo, cancela su cración y en el caso de que necesitaras Borrar el registro activo, puedes usar: DoCmd.RunCommand acCmdDeleteRecord.
Prueba y verás como funciona de la forma que quieres y coméntanos los resultados.
Saludos
Enrique