Tengo un formulario de albaranes que recoge los datos de varias tablas. Una de ellas es la de productos y deseo que incluya en la tabla DetallesAlbaranes el valor del producto de la tabla Productos, pero que al mismo tiempo si se quiere se pueda modificar.
Lo ideal seria que modificases el precio desde un formulario Productos basado en esa misma tabla Productos, después solo tendrías que actualizar el otro formulario con una macro cuya acción fuese Nueva consulta, o con el método Repaint. Otra forma seria con una consulta de actualización usando DAO y después actualizando el formulario. Puedes usar neptuno.mdb para ver este ejemplo: Sub UpdateX() Dim dbsNeptuno As Database Dim rstEmpleados As Recordset Dim strAntiguoNombre As String Dim strAntiguosApellidos As String Dim strMensaje As String Set dbsNeptuno = CurrentDb Set rstEmpleados = _ dbsNeptuno.OpenRecordset("Empleados") 'aqui usariamos la tabla Productos With rstEmpleados .Edit ' Almacena los datos originales. strAntiguoNombre = !Nombre strAntiguosApellidos = !Apellidos ' Cambia los datos en el búfer de modificación. !Nombre = "María" !Apellidos = "Álvarez" ' Muestra el contenido del búfer y obtiene una entrada del usuario. strMensaje = "Modificación en progreso:" & vbCr & _ " Datos originales = " & strAntiguoNombre & " " & _ strAntiguosApellidos & vbCr & " Datos en el búfer = " & _ !Nombre & " " & !Apellidos & vbCr & vbCr & _ "¿Utilizar Update para reemplazar los datos originales con " & _ "los datos del búfer en el Recordset?" If MsgBox(strMensaje, vbYesNo) = vbYes Then .Update Else .CancelUpdate End If ' Muestra los datos resultantes. MsgBox "Datos en el Recordset = " & !Nombre & " " & _ !Apellidos ' Restaura los datos originales porque esto es un ejemplo. If Not (strAntiguoNombre = !Nombre And _ strAntiguosApellidos = !Apellidos) Then .Edit !Nombre = strAntiguoNombre !Apellidos = strAntiguosApellidos .Update End If .Close End With dbsNeptuno.Close End Sub NOTA: para ver como funciona el subprocedimiento solo tienes que pegar el código en un módulo nuevo y escribir: call updatex En la ventana inmediato del depurador de visual basic.