Código que de siguiente registro en un formulario

Tengo un formulario que tiene un sub formulario el cual es el siguiente

El problema es que cuando escojo una prenda de vestir en el subformulario no se pone en un nuevo registro sino en el primero

La idea es que cada vez que elijo una prenda de veztir la ponga en un nuevo registro pero no se como hacer eso

Este es el código:

Private Sub lst_prendas_Click()
Dim Cant As String

If Not IsNull(Forms("Factura").idfactura) Then
Forms("Factura").c_entrada_inv.Form.idprenda = Me.lst_prendas
Forms("Factura").c_entrada_inv.Form.prenda = DLookup("prenda", "c prendas", "id_prenda='" & Me.lst_prendas & "'")
Forms("Factura").c_entrada_inv.Form.Precio_Uni = DLookup("precio", "c prendas", "id_prenda='" & Me.lst_prendas & "'")
Cant = InputBox("INTRODUZCA EL NUMERO PIEZAS")
Forms("Factura").c_entrada_inv.Form.cantidad = Cant
Forms("Factura").c_entrada_inv.Form.idprenda.SetFocus
Else
MsgBox "Por favor inicie primero en el campo cliente para activar una nueva Factura", vbInformation, "Codigo de Factura en blanco"
End If
End Sub

2 respuestas

Respuesta
2

A ver así, te marco en negrita lo que has de añadir:

Private Sub lst_prendas_Click()
Dim Cant As String
If Not IsNull(Forms("Factura").idfactura) Then
Forms("Factura").c_entrada_inv.SetFocus
DoCmd.GoToRecord , , acNewRec
Forms("Factura").c_entrada_inv.Form.idprenda = Me.lst_prendas
Forms("Factura").c_entrada_inv.Form.prenda = DLookup("prenda", "c prendas", "id_prenda='" & Me.lst_prendas & "'")
Forms("Factura").c_entrada_inv.Form.Precio_Uni = DLookup("precio", "c prendas", "id_prenda='" & Me.lst_prendas & "'")
Cant = InputBox("INTRODUZCA EL NUMERO PIEZAS")
Forms("Factura").c_entrada_inv.Form.Cantidad = Cant
Forms("Factura").c_entrada_inv.Form.idprenda.SetFocus
Else
MsgBox "Por favor inicie primero en el campo cliente para activar una nueva Factura", vbInformation, "Codigo de Factura en blanco"
End If
End Sub

Respuesta
2

Antes de nada, si ya tienes la fecha y Nrecibo en el formulario ¿para qué repetirlos en el subformulario? Por otro lado, si a cada prenda le corresponde un Idprenda ¿para qué poner los dos campos en el subformulario?

Tengo una tabla Productos

Tengo un formulario Facturas con un subformulario DetalleFactura, relacionados ambos por NRecibo, y un cuadro de lista con los productos, con una columna oculta Precio

Si hago clic en Sirope de regaliz, me pasa al subformulario el producto y su precio. Luego hago clic en Buey... y lo mismo, etc

Ahora, si en sirope pongo la cantidad que le vendo

Y pulso Enter, en Subtotal me pone el producto Precio*Cantidad y en el cuadro de texto TotalFactura me va poniendo la suma acumulada de los diferentes subtotales

El código del evento Al hacer clic del cuadro de lista es

Private Sub Lista17_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into detallefactura(producto,precio)values('" & Me.Lista17.Column(0) & "', " & Me.Lista17.Column(1) & ")"
DoCmd.RunSQL "update detallefactura set nrecibo=" & Me.NRecibo & " where nrecibo is null"
Me.DetalleFactura.Form.Requery
End Sub

Y el código del evento Después de actualizar del cuadro de texto Cantidad del subformulario es

Private Sub Cantidad_AfterUpdate()
Subtotal = Precio * Cantidad
DoCmd.RunCommand acCmdSaveRecord
Me.Parent!TotalFactura = DSum("subtotal", "detallefactura", "nrecibo=" & Me.NRecibo & "")
End Sub

Y creo que es mucho más sencillo que lo que estás haciendo

¡Gracias! Esta supergracias aprovecho también para agradecerte por el anterior muchas gracias también

Prueba a quitar el código del subformulario y pon únicamente el siguiente código en el evento Al hacer clic del cuadro de lista.

Private Sub Lista17_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into detallefactura(producto,precio)values('" & Me.Lista17.Column(0) & "', " & Me.Lista17.Column(1) & ")"
Dim a As Integer
a = InputBox("Por favor, escriba una cantidad", "Muchas gracias")
DoCmd.RunSQL "update detallefactura set nrecibo=" & Me.NRecibo & ",cantidad = " & a & " where nrecibo is null"
DoCmd.RunSQL "update detallefactura set subtotal=precio*cantidad"
Me.DetalleFactura.Form.Requery
TotalFactura = DSum("subtotal", "detallefactura", "nrecibo=" & Me.NRecibo & "")
End Sub

Cuando elijas algo del cuadro de lista, te preguntará por la cantidad que vas a poner. La escribes, aceptas y todo lo demás lo hace el código. Tanto lo del producto, como el precio,la cantidad, como el Subtotal y el TotalFactura.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas