Access - Suma en subform desde form

 
Vista:

Suma en subform desde form

Publicado por Tachenco (1 intervención) el 10/01/2007 12:03:49
Vereis, tengo un form con un subform(datasheet), el subform viene de una conulta a una tabla llamada X. El subform y el form estan enlazados por 3 campos que son Nombre, Dimensiones y Material. Ademas tiene dos campos más que son el "nº de trabajo" y "cantidad", que son los importantes, el resto los uso para enlazarlo al form.

En el form tengo un control con un cuadro de texto, un combobox y un boton, entre otras cosas. Ese cuadro de texto esta para que metas una cantidad, y el combo para seleccionar un nº de trabajo.

Mi problema es:
Como hago para que la cantidad que metas en el cuadro de texto se reste al valor de "Cantidad" del subform, pero claro, se tiene que restar al registro correcto, aquel cuyo "nº de trabajo" del form se corresponda con el "nº de trabajo" del subform.

Joe, menudo lio, no?

Muxas gracias por vuestro tiempo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Restar cantidad a un campo en subformulario basado en número de trabajo seleccionado en formulario

Publicado por Alejandro (4142 intervenciones) el 01/08/2023 17:53:45
Para restar la cantidad ingresada en el cuadro de texto del formulario al campo "Cantidad" en el subformulario, basándote en el "Número de Trabajo" seleccionado en el formulario principal, puedes utilizar el siguiente código VBA en el evento del botón que realizas la acción:

1. Asegúrate de que el cuadro de texto donde se ingresa la cantidad tenga un nombre significativo, como "txtCantidad" y el ComboBox donde se selecciona el "Número de Trabajo" tenga el nombre "cboNumeroTrabajo".
2. Asegúrate también de que el subformulario tenga un nombre significativo, como "subfrmSubformulario".

A continuación, agrega el siguiente código VBA en el evento del botón:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub btnRestarCantidad_Click()
    Dim numeroTrabajo As Variant
    Dim cantidadARestar As Double
 
    ' Obtener el valor del "Número de Trabajo" seleccionado en el ComboBox
    numeroTrabajo = Me.cboNumeroTrabajo.Value
 
    ' Obtener la cantidad a restar ingresada en el cuadro de texto
    cantidadARestar = CDbl(Me.txtCantidad.Value)
 
    ' Recorrer los registros del subformulario y encontrar el registro con el "Número de Trabajo" correspondiente
    Dim rs As DAO.Recordset
    Set rs = Me.subfrmSubformulario.Form.RecordsetClone
    rs.FindFirst "[nº de trabajo] = " & numeroTrabajo
 
    If Not rs.NoMatch Then ' Si se encuentra el registro
        ' Restar la cantidad ingresada a la cantidad actual en el subformulario
        rs.Edit
        rs!Cantidad = rs!Cantidad - cantidadARestar
        rs.Update
    End If
 
    ' Actualizar la vista del subformulario para mostrar los cambios
    Me.subfrmSubformulario.Form.Requery
 
    ' Limpiar el cuadro de texto después de restar la cantidad
    Me.txtCantidad.Value = ""
End Sub

Explicación:
- El código obtiene el "Número de Trabajo" seleccionado en el ComboBox y la cantidad a restar ingresada en el cuadro de texto.
- Luego, busca el registro correspondiente en el subformulario utilizando un objeto Recordset y la función `FindFirst`.
- Si se encuentra el registro con el "Número de Trabajo" correspondiente, se resta la cantidad ingresada al campo "Cantidad" en el subformulario utilizando la función `Edit`, `Update`, y actualiza la vista del subformulario para mostrar los cambios mediante `Requery`.
- Finalmente, se limpia el cuadro de texto para permitir nuevas operaciones.

Con este código, podrás restar la cantidad ingresada en el cuadro de texto del formulario al campo "Cantidad" del subformulario, siempre que el "Número de Trabajo" coincida en ambos formularios.

Espero que esta solución te sea útil. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar