Descontar valor campo de cada registro formu

Tengo un formulario que me muestra un campo STOCK de cada registro de una consulta. A través de un botón hago que me descuente la cantidad que escibo antes en un textbox. El problema que tengo es que solo me la descuenta en el registro en el que estoy puesto, no en todos los registros de la consulta. Si quiero descontar 5, lo quiero descontar en todos los registros de la consulta, en el campo STOCK.
Stock es un campo calculado de otros campos que hay en una tabla.
Tengo la impresión de que tengo que ir recorriendo cada registro y haciendo la operación matemática, pero no se cómo ir recorriendo cada registro que muestra el formulario basado en la consulta.
Si pudiera, aparte de explicarlo, poner un ejemplo sencillo con la sitaxis.

1 respuesta

Respuesta
1
Creo entenderte ya que algo parecido me sucedió alguna vez. Supongo que el formulario es un form continuo, y estas en lo correcto, debes recorrer los campos, para esto debes utilizar una rutina sencilla en VBA, te doy el código.
En el botón para descontar el valor coloca esto.
Dim rs As DAO.Recordset ' se crea un recordset que almacene los registros del form
Set rs = Me.RecordsetClone
rs.MoveFirst
While Not rs.EOF
Me.Recordset.Bookmark = rs.Bookmark
' Aca colocas el codigo que descuenta el valor al stock
'por ejm: txtStock = txtStock - txtDescuento
rs.MoveNext
Wend
Eso es todo, el recordset recorre los registros del form y ejecuta el código que le especifiques hasta que llegue al ultimo registro.
Cualquier duda me la comentas.
Éxitos.
Muchas gracias. En tanto que esperaba la respuesta, seguí programando y di con la solución, muy parecida a la que tu me comentas ahora. La dejo por si le sirve a alguien más la alternativa.
Private Sub Boton_DescontarStock_Click()
'primero declaro el recordset (para recorrer registros)
Set rst = CurrentDb.OpenRecordset("aqui pongo la consulta", dbOpenDynaset)
'le digo que se vaya al primer registro de la consulta
rst.MoveFirst
'Mientras no mire todos los registros, que haga los siguiente
Do While Not rst.EOF
rst.Edit 'para poder modificar el registro
rst.STOCK_TALLER.Value = operacion matematica
rst.Update 'para que me actualic el valor del registro modificado
rst.MoveNext 'para que se mueva al siguiente registro
Loop
DoCmd.RunCommand acCmdRefresh 'Actualizo el formulario para ver los cambios
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas