Cómo grabar valores en tablas

Necesito que el valor calculado (Q_ingred *Costo_ingred) para la elaboración de recetas se grabe en el campo que corresponde (Sub_Total) y en la tabla que corresponde: “Detalle Elaboración”. El ingreso de los datos lo hago por medio de un subformulario que cree es a partir de esa tabla, “Detalle Elaboración”, que está dentro de un formulario, “Tabla Elaboración”, que desarrollé a partir de la tabla, “Tabla Elaboración”.

Utilicé esta rutina:

Private Sub Costo_ingred_AfterUpdate()

'Declaramos variables

Dim vResult As Long

'Cogemos el valor del campo calculado. Si no hay valor

'establecemos el resultado de la operación como cero.

vResult = Nz(Me.txtResultado.Value, 0)

'Pasamos el valor del campo calculado al campo (Sub_Total)

Me.Sub_Total = vResult

End Sub

Private Sub Q_ingred_AfterUpdate()

Call Costo_ingred_AfterUpdate

End Sub

Además, necesito que el valor total de la receta, que es la suma de todos esos sub totales, se grabe en el campo que corresponde de la Tabla “Tabla Elaboración”.

El formulario funciona bien hasta el cálculo de sub total (Q_ingred *Costo_ingred), sin embargo, no graba los valores en las tablas. Entiendo que debo agregar en el pie de página del subformulario un cuadro de texto donde hacer los cálculos y el campo existente (Sub_Total) de la tabla correspondiente, cosa que hice, y también introduje un “espejo” de ese cálculo en el pie del formulario para llevarlo a la tabla “Tabla Elaboración”, pero la instrucción que doy en la subrutina (Me.Sub_Total = vResult) no hace la grabación.

Respuesta
1

Preparé este ejemplo con 2 tablas 1 formulario 1 subformulario.

Tablas

Formularios

Los campos Sub_Total y Total del subformulario se deben bloquear, quedan muchas cosas por controlar que no hago para no extender el ejemplo.

El subformulario tiene estos eventos Después de actualizar en los campos Q_ingred y Costo_ing:

Observe como el procedimiento Costo_ing_AfterUpdate es el encargado de hacer los cálculos y actualizar la tabla tblelaboracion. Es importante la instrucción Me. Recalc para que actualice el campo "Total" del subformulario, si no hubiera colocado este campo la línea donde actualizo la tala tblelaboracion cambiaría. Si quiere el ejemplo puede solicitarlo a [email protected] favor anotar en el asunto la consulta.

1 respuesta más de otro experto

Respuesta
2

Vamos a suponer que las tablas se llaman Producto( con un campo, entre otros, llamado CosteTotal) y Elaboracion,( con un campo llamado Subtotal) relacionadas ambas por IdProducto(UN producto VARIOS componentes. Y con ellas has hecho el formulario con el subformulario. En el subformulario no necesitas para nada el cuadro de texto Subtotal

En el evento Después de actualizar del cuadro de texto Costo*ingred puedes crear un procedimiento de evento y entre Private Sub y End Sub poner

subtotal=Q_ingred *Costo_ingred

docmd.runcommand accmdsaverecord

me.parent!costetotal=dsum("subtotal","Elaboracion","idproducto=" & me.idproducto & "")

Es decir, que cuando pongas un componente y escribas el coste_ingred y pulses Enter en :

Subtotal te pone el producto Cantidad*precio

En el cuadro de texto Coste Total del formulario "padre" te va poniendo la suma acumulada de los diferentes componentes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas