Error al actualizar fila del sub formulario

Tengo un formulario "FacturaVentas" y un subformulario "LineaFacturaVentas", y cuando estoy agregando los productos en el subformulario me di cuenta que solo cuando me queda 1 en el stock de cualquier articulo me sale un aviso indicando un problema,

si le digo que no me envia otro mensaje

y me envia a vba para ver el codigo con problemas y me muestra esto

Este seria el código en cuestión. Me imagino que el problema tiene que ser donde el articulo queda en cero, pero no se que debo hacer para solucionarlo.

De antemano muchas gracias

DoCmd.RunSQL "Update ARTICULOS set PRECIO_AR=((NZ(STOCK_AR)*NZ([PRECIO_AR]))-('" & Me.COSTO_FV & "'*'" & Me.CANTIDAD_FV & "'))/'" & Me.STOCK_FINAL & "',STOCK_AR=STOCK_FINAL where CODIGO_ARTICULO_A='" & Me.CODIGO_ARTICULO_FV & "'"

1 Respuesta

Respuesta
1

Si STOCK_FINAL te queda en 0, es normal que te salten errores, porque no puedes dividir por 0.

Una solución fácil y rápida es comprobarlo con un If y actuar en consecuencia, por ejemplo:

If Me.STOCK_FINAL=0 Then

DoCmd.RunSQL "Update ARTICULOS set PRECIO_AR= Fórmula cálculo si stock =0 ....

Else

DoCmd.RunSQL "Update ARTICULOS set PRECIO_AR= Fórmula cálculo que ya tienes....

End If

Serias tan amable de indicarme en que parte de la fórmula agrego el cero, ya que he probado de colocar el 0 en diferentes lugares pero no me funciona. Perdón por mi ignorancia

Private Sub Aactualizar_LostFocus()
If Me.Stock_Final = 0 Then
DoCmd.RunSQL "Update Articulos set Precio_Ar=((Nz(Stock_Ar)*Nz([Precio_Ar]))-('" & Me.Costo_FV & "'*'" & Me.Cantidad_FV & "'))/'" & Me.Stock_Final & "',Stock_Ar=Stock_Final where Codigo_Articulo_A='" & Me.Codigo_Articulo_FV & "'"
Else
DoCmd.RunSQL "Update Articulos set Precio_Ar=((NZ(Stock_Ar)*NZ([Precio_Ar]))-('" & Me.Costo_FV & "'*'" & Me.Cantidad_FV & "'))/'" & Me.Stock_Final & "',Stock_Ar=Stock_Final  where Codigo_Articulo_A='" & Me.Codigo_Articulo_FV & "'"
End If
End Sub

Si en las dos partes del If vas a poner lo mismo,  el If deja de tener sentido....

Tu fórmula para calcular el precio [ (Stock_Ar * Precio_Ar - Costo_FV * Cantidad_FV ) / Stock_Final ]  te sirve solo si el stock_final no es 0, porque como sabrás,  no puedes dividir por 0, y eso se traduce en un error.

Tu sabrás qué fórmula debes usar para calcular el precio si el stock_final es 0, porque yo la desconozco, igual que tampoco acabo de entender la que ya tienes, y esa fórmula la tienes que poner en el primer runsql.

Es decir, que tienes que poner en los puntos la fórmula que sea ( distinta a la que ya tienes):

If Me.Stock_Final = 0 Then
DoCmd.RunSQL "Update Articulos set Precio_Ar=........... & "',Stock_Ar=Stock_Final where Codigo_Articulo_A='" & Me.Codigo_Articulo_FV & "'"
Else

Existe otro método para poder sacar el promedio del precio de compra a medida que vas ingresando los artículos y que los valla rebajando cuando los vas vendiendo sin que produzca ese error al quedar en cero?

Métodos de valoración de inventarios hay muchos (FIFO, LIFO, HIFO, NIFO, PMP...), pero hasta donde yo sé, ninguno utiliza las existencias finales para realizar la valoración de las mercancías...

Tampoco reconozco la fórmula que tu usas...

Quier pensar que usas PMP (es la que más se me parece), pero ese sistema valora las existencias en el momento de hacer una compra, no una venta.

ok. muchas gracias por tu ayuda y orientación.

Veré si encuentro algún método de los que me indicas para ver si me sirve

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas