¿Cambiar texto del mensaje de aviso al ingresar cantidad y corregir el stock?

Quería pedirles de su ayuda con un formulario que tengo llamado "factura de compra" con un subformulario "detalle de factura". En este subformulario tengo los campos CÓDIGO DE ARTICULO, DESCRIPCIÓN, STOCK, PRECIO, CANTIDAD_FC, STOCK_FINAL, SUBTOTAL.

También tengo una tabla ARTICULOS donde se almacena la cantidad y el stock,

Sacando el promedio de estos dos campos de forma efectiva cuando acepto la actualización de la fila,

Pero cuando me equivoco en ingresar la cantidad y no acepto la actualización de la fila, la cantidad anteriormente ingresada no disminuye del STOCK, borro la cantidad y agrego otra y se suma con la anterior lo cual no es real.

Si tenia 4 en STOCK al principio y agrego 1 en cantidad, luego si digo si a la actualización de la fila me suma uno más al STOCK sin problemas, pero si no actualizo la fila debería volver el stock a su normalidad de 4, pero no es así, de hecho cuando no actualizo y cambio a 2 la cantidad debería quedarme en stock 6 y me suma la cantidad anteriormente ingresada.

Este seria el código que tengo en el campo CANTIDAD, en el evento después de actualizar

Me.STOCK_FINAL.Value = Nz([STOCK]) + CANTIDAD_FC
Me.STOCK.Value = Me.STOCK_FINAL

DoCmd.RunSQL "Update ARTICULOS set PRECIO_AR=((NZ(STOCK_AR)*NZ([PRECIO_AR]))+('" & Me.PRECIO & "'*'" & Me.CANTIDAD_FC & "'))/'" & Me.STOCK_FINAL & "',STOCK_AR=STOCK_FINAL where CODIGO_ARTICULO_A='" & Me.CODIGO_ARTICULO_FC & "'"

1 respuesta

Respuesta
1

Lo puedes hacer de mil formas. Por ejemplo, supongamos que tengo el formulario Compras con el subformulario DetalleCompra

Hasta ese momento había en el stock 29 Unidades. En cantidad anoto 4 y al pulsar Enter

Si le digo sí

29 que había + 4 que acabo de comprar, el nuevo stock es 33

Vamos a suponer que escribo una cantidad

Si le digo que no el cursor se vuelve al control Cantidad por si quiero cambiarlo

Las antiguas existencias siguen siendo 32 pero al cambiar la cantidad, las nuevas son

32 + 25 =57

El código del evento Antes de actualizar del cuadro de texto Cantidad es

Private Sub Cantidad_BeforeUpdate(Cancel As Integer)
If MsgBox("¿Está seguro de querer actualizar el stock?", vbYesNo, "Luego no digas que no te avisé") = vbYes Then
Exit Sub
ElseIf vbNo Then
DoCmd.CancelEvent
End If
End Sub

En mi caso, en el evento Después de actualizar del cuadro de texto Cantidad tengo puesto

Private Sub Cantidad_AfterUpdate()
Subtotal = Precio * Cantidad
Despues = Nz([Antes]) + Cantidad
DoCmd.RunCommand acCmdSaveRecord
Me.Parent!Importe = DSum("subtotal", "detallecompra", "idcompra=" & Me.IdCompra & "")
Me.Parent!ImporteIVA = Me.Parent!Importe * Me.Parent!TipoIVA / 100
Me.Parent!TotalFactura = Me.Parent!Importe + Me.Parent!ImporteIVA
DoCmd.RunSQL "Update Productos set precio=((Existencias*precio)+(" & Me.Precio & "*" & Me.Cantidad & "))/" & Me.Despues & ",existencias=despues where producto='" & Me.Producto & "'"
End Sub

Oka, lo tratare de aplicar y te cuento. gracias

Ya probé el código antes de actualizar en el campo cantidad y funciona super bien,

pero me sigue dando este aviso después de confirmar la cantidad ingresada.

si le digo si, pasa a la siguiente etapa sin problema, pero me gustaría que saliera este aviso después de completar los dos últimos campos que no siempre tienen valores. y lo ultimo si le digo no al ultimo mensaje, me sale otro aviso que me gustaría que no saliera, que puedo hacer

este es el código completo que tengo en el campo cantidad en el evento después de actualizar

Private Sub CANTIDAD_FC_AfterUpdate()
Me.STOCK_FINAL.Value = Nz([STOCK]) + CANTIDAD_FC
Me.STOCK.Value = Me.STOCK_FINAL
Me.PRECIO_NETO.Value = (Nz(Me.PRECIO.Value * Me.CANTIDAD_FC.Value))
Me.SUB_TOTAL.Value = (Nz(Me.PRECIO_NETO.Value)) * -(Nz(Me.Ctl_DESCUENTO.Value)) + (Nz(Me.PRECIO_NETO.Value)) + (Nz(Me.IMP_ESP_COMB))
Me.IVA.Value = (Nz(Me.SUB_TOTAL.Value * 0.19))
Me.TOTAL.Value = (Nz(Me.SUB_TOTAL.Value + Me.IVA.Value))
DoCmd.RunSQL "Update ARTICULOS set PRECIO_AR=((NZ(STOCK_AR)*NZ([PRECIO_AR]))+('" & Me.PRECIO & "'*'" & Me.CANTIDAD_FC & "'))/'" & Me.STOCK_FINAL & "',STOCK_AR=STOCK_FINAL where CODIGO_ARTICULO_A='" & Me.CODIGO_ARTICULO_FC & "'"
End Sub

Como me molesta que aparezca esa ventanita cada vez que hago algo, en Archivo-Opciones-Configuración de cliente tengo desactivada la casilla Confirmar-Consultas de acción. Pero, si te tuviera que aconsejar, justo debajo de Private Sub Cantidad....le añadiría una línea

Docmd.setwarnings false

Esto lo que hace es que desactiva los avisos

Y luego al final de todo le pondría

docmd.setwarnings true

Para que te los vuelva a activar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas