Insertar valor de un campo de Formulario en otro con Sub formulario

Tengo el siguiente código

Private Sub InsertarEnForm1_Click()
If CurrentProject.AllForms("F_Movimientos").IsLoaded Then
Forms!F_Movimientos!F_MovimientosDetalle.Form!vCC = Id
Forms!F_Movimientos!F_MovimientosDetalle.Form!CuentaContable = CuentaContable
Forms!F_Movimientos!F_MovimientosDetalle.Form!AuxContable = Auxiliar
Forms!F_Movimientos!F_MovimientosDetalle.Form!RubroContable = RubrosContables
End If
DoCmd. Close acForm, "F_CuentaContableDialog"

Me copia el valor en el correspondiente campo pero el inconveniente es que lo hace en todas las lineas del subformulario y no en la linea en la que estoy trabajando.

Para ejemplificar la imagen muestra que estaba situado en la segunda linea y al ejecutar el comando no solo modifico esa linea sino que también la primera y la tercera.

No se como solucionarlo

2 respuestas

Respuesta

Si se trata de 'insertar' (añadir) un nuevo registro, lo primero seria crear el registro (uno nuevo en blanco), asignarle los valores y al finalizar dar la orden de guardar el registro.

No he apreciado ese efecto (ni referencias a el) y de concluir algo seria que se esta emulando una consulta de actualización que afectara a todos los actuales en el subformulario al no estar condicionada.

La formula mas habitual de generar un nuevo registro, es mediante SQL (insertarlo en la tabla/tablas) y tras la inserción, recargar (actualizar/refrescar) el subformulario.

Si se desea utilizar el método descrito al inicio, debería hacerse de la forma ortodoxa, insertándolo en el RecordsetClone del subformulario, esto es:
Añadir un nuevo registro ===> asignarle los valores ===> guardarlo

No se debe de perder de vista que el 'RecordsetClone' es un Recordset a todos los efectos, independiente de que se genere automáticamente cuando se abre un/el formulario y que su 'vida útil este subordinada a el.

Ante todo gracias por responder

Te comento que mi intención no es crear un nuevo recordset

Quiero introducir en un campo de un subformulario un valor proveniente de otro formulario.

no se si es posible?

Lo he hecho de formulario a formulario, pero de formulario a subformulario no logro que haga lo que deseo.

Si no se desea crear un nuevo registro (copia de uno en otra ubicación) la alternativa será modificar los datos de uno tomándolos 'del otro' ¿es esto correcto?.

Si no se desease modificar los que ya están y no se quiere añadir otro, la única alternativa que queda es borrar algo.

Los datos se crean, si están creados se modifican y cuando ya no son útiles se borran (o eso es lo habitual)

Nota: en parte alguna hay indicación de crear un recordset (sinónimo de tabla) sino de crear un registro.

Respuesta

Pruebe con este código

Private Sub InsertarEnForm1_Click()
If CurrentProject.AllForms("F_Movimientos").IsLoaded Then
    Dim miRS As Recordset
    Set miRS = Forms!F_Movimientos!F_MovimientosDetalle.Form.RecordesetClone
     miRS.AddNew
     miRS!vCC = Id
     miRS!CuentaContable = CuentaContable
     miRS!AuxContable = Auxiliar
     miRS!RubroContable = RubrosContables
    miRS.Update
End If
DoCmd.Close acForm, "F_CuentaContableDialog"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas