Actualizar tabla Access con datos de subformulario

Necesito la siguiente ayuda en Access:
Tengo una tabla:
INVENTARIO: Código - Cantidad - Tipo de Movimiento (entrada o salida)

Y otra tabla de PEDIDOS y DETALLE DE PEDIDOS. Ambas en un mismo formulario.

El form es algo asi: 
Pedido Numero: 1

Detalle:
Cod - Cantidad - Precio - Subtotal

45    -     5         - $ 500 -    $ 2.500
23    -     2         -  $ 100 -   $ 200
T:           7                        -  $ 2.700
Botón: "Realizar Venta"
Necesito que cuando se haga clic en ese botón, se descuente de la tabla de INVENTARIO todos esos items. Agregando estos registros según el ejemplo anterior.
Inventario:
Cod - Cantidad - Tipo de Momiviemto
45    -       5         -   Salida
23    -       2          -   Salida
¿Cómo puedo hacerlo?

Respuesta
1

Sebastián: Aún estando bien explicada tu necesidad, la verdad es que no veo de donde quieres descontar la Cantidad vendida.

Para hacer el apunte de las cantidades vendidas y el Concepto, una manera de hacerlo es usando el RecorsetClone del SubFormulario.

Para mayor facilidad, ese botón que citas lo pones en "DETALLE DE PEDIDOS" y pones éste código en el Evento Click. Voy a suponer que se llama BtnAnotaVentas

Private Sub BtnAnotaVentas_Click()
Dim QryTabla As String
Dim Rst As DAO.Recordset
Dim RstTabla As DAO.Recordset
Set Rst = Me.RecordsetClone
QryTabla ="SELECT * FROM INVENTARIO;"
Set RstTabla = CurrentDB.OpenRecordset(QryTabla,dbOpenDynaset)
'Estas dos líneas son opcionales
Rst.MoveLast
Rst.MoveFirst
Do While Not Rst.EOF
      RstTabla.AddNew
          RstTabla!Cod = Rst!Cod
          RstTabla!Cantidad = Rst!Cantidad
          RstTabla![Tipo de Movimiento] = "Salida"
      RstTabla.Update
      Rst.MoveNext
Loop
Rst.Close
RstTabla.Close
Set Rst = Nothing
Set RstTabla = Nothing
QryTabla = ""
End Sub

Como observación y respetando que cada uno tenemos nuestras costumbres, a mi modo de ver es menos complicado codificar a la larga, los Nombre de los Objetos cortos.

Tablas, Consultas, Formularios, Campos etc.

Ejemplo; Formulario >> DETALLES DE PEDIDOS >> DetallesPed

Tipo de Movimiento >> TipoMov

Entre otras cosas, porque los nombres con espacios han de seguir reglas que no han de seguir los que no los tienen. Mis saludos >> Jacinto

Jacinto,

Gracias por la respuesta,

Todavía no funciona pero por que te he dado los nombres de campos aproximados, solo para que captaras la idea. Mira estos son los campos reales:

Tal vez, sea igual, pero falte contemplar el campo ID y FECHA de la tabla de inventario. Por eso cuando puse el código no creo ningún registro en la tabla de inventario. La fecha seria la de hoy, en realidad la del formulario del pedido.Y luego el ID consecutivo.
¿Cómo quedaría el código entonces Jacinto?
Gracias por tu ayuda!

Sebastián: El Código quedaría igual, solo modificando el Nombre de algún campo y añadiendo la Fecha.

Si el Id lo tienes como Auto Numérico en la Tabla, se rellena solo.

Private Sub BtnAnotaVentas_Click()
Dim QryTabla As String
Dim Rst As DAO.Recordset
Dim RstTabla As DAO.Recordset
Set Rst = Me.RecordsetClone
QryTabla ="SELECT * FROM Inventario;"
Set RstTabla = CurrentDB.OpenRecordset(QryTabla,dbOpenDynaset)
'Estas dos líneas son opcionales
Rst.MoveLast
Rst.MoveFirst
Do While Not Rst.EOF
      RstTabla.AddNew
          RstTabla!Fecha = Date
          RstTabla!Codigo = Rst!Codigo   
          RstTabla!Movimiento = "Salida"
          RstTabla!Cantidad = Rst!Cantidad
      RstTabla.Update
      Rst.MoveNext
Loop
Rst.Close
RstTabla.Close
Set Rst = Nothing
Set RstTabla = Nothing
QryTabla = ""
End Sub

He ido escribiendo sobre la marcha, pero creo que te servirá. Lo pruebas y me comentas.

No olvides Activar" [Procedimiento de evento] en las propiedades del Botón y si no lo llamas como BtnAnotaVentas, has de cambiarlo en el Código.

Visualmente me parece que está en el pie del sub formulario, pero asegura, que así sea.

Mis saludos >> Jacinto

Excelente!
Solo una pregunta más! ¿Sabrás como hacer para que tome la fecha que este en el formulario? Es decir, la fecha que tenga puesta arriba.

Por lo demás, funciona perfecto!

Sebastián: para lo que pides has de sustituir la línea que pone>>

RstTabla!Fecha = Date por ésta otra

RstTabla!Fecha = Me.Parent.NombreDelTextBox

Lo que va en Negrita y Cursiva, es el Nombre que tenga el cuadro de Texto en tu Formulario Principal, que al no estar en vista de diseño, no sé como se llama.

Si vas de acuerdo, no olvides valorar la respuesta. Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas