Actualizar costos en la tabla productos desde una tabla temporal de compras.

Estoy desarrollando un POS en ms acess, sin embargo, me he topado con el proceso de actualización de costos. Verán, al ingresar una compra, lleno los datos de la compra en una tabla temporal que me sirve para cargarlos en pantalla en un subformulario, el problema, es que cuando termino la compra quiero hacer un proceso que automáticamente me lea todos los productos (idproducto) de la tabla temporal y vaya actualizando el costo del producto de uno en uno según el Id en la tabla "Productos". He usado recordsets para hacer consultas de verificación de códigos, y tengo entendido que se puede lograr esto con un ciclo y el recordset, sin embargo, no sé mucho sobre el código vba.

1 Respuesta

Respuesta
1

Te pongo la sistemática un poco en abstracto. De hecho te pongo dos maneras de hacerlo:

1.- Si quieres utilizar recordsets

...

Sub...

Dim rst as dao.recordset

Dim vCosto as currency

Set rst=currentdb.openrecordset("TablaTemporal",dbOpenTable)

With rst

.movefirst

do until .EOF

vCosto=dlookup("CampoCostoTablaProductos","Productos","IdProductoTablaProductos=" & .fields("IdProductoTablaTmp").value)

.edit

.Fields("CampoCostoTablaTmp").value=vCosto

.update

.movenext

loop

end with

rst.close

set rst=nothing

...

2.- Si quieres ir rellenándolo a medida que añades, en el formulario, las líneas de registro.

El código debería ir en el evento "Después de actualizar" del campo IdProducto

...

Private Sub...

If not isnull(me.IdProducto.value) then

me.Costo.value = dlookup("CampoCostoTablaProductos","Productos","IdProductoTablaProductos=" & me.IdProducto.value)

End if

End sub

...

Te lo he escrito a vuelapluma, pero lo importante es que entiendas la estructura.

Un saludo

¡Gracias!

Me utilizaré la primera función, ya que si actualizo costos según vaya ingresando cada producto de la compra podría variar valores en el costo si el usuario se equivoca de producto y decide eliminar la línea.

Eres el mejor Nekkito

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas