Problemas con INSERT INTO desde subformulario a otra 2 tablas (relacionadas)

Tengo un problema que no he podido resolver:

Tengo un boton en el formulario principal para copiar datos desde este lugar y también de un subformulario a 2 tablas que están relacionadas entre si.

Lamentablemente al ejecutar se queda pegado

Este es el código utilizado

Private Sub Comando11_Click()
'copio los datos que estan en el formulario principal
DoCmd. RunSQL "INSERT INTO asientos (Fecha, Tc, Nc, Glosa, nma)VALUES(Texto2, Cuadro_combinado4, Texto8, Texto7, 2)"
'ahora es el turno de los datos del subformulario,  aqui se pega
DoCmd.SetWarnings False
Dim Rst As DAo.Recordset, subfrm As Form, i As Integer
Set subfrm = Me!S_C_Centraliz_Honorarios.Form
Set Rst = subfrm.RecordsetClone
subfrm.Recordset.Bookmark = Rst.Bookmark
With Rst
.MoveFirst
While Not .EOF
If chon = 1 Then 'este es el checkbox marcados
'a continuación debe generar 3 filas en Dasientos por cada registro del subformulario
DoCmd. RunSQL "INSERT INTO Dasientos(Ncta, cc, DEBE)VALUES(Mcgasto, cchon, Mbhon)"
DoCmd. RunSQL "INSERT INTO Dasientos(Ncta, RT, dRT, vcto, HABER)VALUES(Mpserv, rbhon, db, Vhon, Rthon)"
DoCmd. RunSQL "INSERT INTO Dasientos(Ncta, RT, dRT, vcto, HABER)VALUES(Mcpasivo, rbhon, db, Vhon, Rchon)"
. MoveNext
End If
Wend
End With

End sub

1 Respuesta

Respuesta

Puedes hacer la inserción sin necesidad de un recordset es más sencillo.

Por ejemplo:

Private Sub BtnDuplicar_Click()
    CurrentDb.Execute "INSERT INTO [M APU DETALLE MATERIALES](APU,MATERIAL,CANTIDAD,DESPERDICIO,[TOTAL M]) " _
                    & "VALUES(" & Me.APU & "," & Forms![FM APU AC]![FM SUB APU MATERIAL AC]!MATERIAL & "," _
                    & Forms![FM APU AC]![FM SUB APU MATERIAL AC]!CANTIDAD & "," _
                    & Forms![FM APU AC]![FM SUB APU MATERIAL AC]!DESPERDICIO & "," & Me.Texto66 & ")", dbfailonerror
End Sub

Solo tienes que señalar en donde esta el campo  de tu subformulario que quieres insertar .

Forms![Nombre del formulario]![Nombre del subformulario]! Nombre del campo que esta en tu subformulario.

Este es el código que puse en un botón en el formulario principal, pero solo me muestra el MsgBox "No hay registros marcados para centralizar. no se que faltara.

Ademas, como puedo copiar el ID de la tabla destino(principal ) a la otra tabla relacionada

Private Sub Comando11_Click()
Me.S_C_Centraliz_Honorarios.SetFocus
If chon = True Then 'checkbox este marcado
'copio los datos que estan en el formulario principal y el subformulario
CurrentDb.Execute "INSERT INTO asientos (Fecha,Tc,Nc,Glosa,nma)VALUES(Forms![Centraliza Honorarios].Texto2,Forms![Centraliza Honorarios].Cuadro_combinado4,Forms![Centraliza Honorarios].Texto8,Forms![Centraliza Honorarios].Texto7,2)"
CurrentDb.Execute "INSERT INTO Dasientos(Ncta,DEBE)VALUES(Forms![Centraliza Honorarios]![S_C_Centraliz_Honorarios]!Mcgasto,Forms![Centraliza Honorarios]![S_C_Centraliz_Honorarios]!MBhon)"
Else
MsgBox "No hay registros marcados para centralizar ", vbCritical, "ATENCION!!!"

End If
Me.S_C_Centraliz_Honorarios.Requery
End Sub

De antemano muchas gracias por la ayuda

If chon = True

¿La validación anterior por que la haces?

Ese corresponde al checkbox que se encuentra en el subformulario y lo que intento decir es que si esta marcado copie esa línea en las tablas relacionadas.

Estas validando mal.

Si tu checkbox esta en tu formulario así no se hace. Iría de la siguiente manera

If Forms![Nombre del formulario]![Nombre del subformulario]! Nombre del campo = true then

end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas