Fallo en código para actualizar stock de productos

Este es el código que tengo

Private Sub ActualizarStock()
If MsgBox("Confirmar Pedido y Actualizar STOCK?", vbYesNo, "CONFIRMAR VENTA") = vbYes Then
    With Me.DetPedidos_Subformulario.Form.RecordsetClone
        .MoveFirst
        Do While Not .EOF
        CurrentDb.Execute ("UPDATE Productos set StockActual=StockIncial-" & !Cantidad.Value & " WHERE IdProducto=" & !IdProducto.Value)
        .MoveNext
        Loop
    End With
    Me.BaseImponible = Me.TPVD / (1.21)
    Me.PreCosto = Me.TPreCompra
    Me.Recalc
Else
    Exit Sub
End If
End Sub

Al ejecutar me da es siguiente mensaje

Error 3061 pocos parámetros se esperaba 1

Si alguien me puede ayudar se lo agradecería.

1

1 Respuesta

864.050 pts. No responderé preguntas de usuarios que no valoren las...

Prueba así (te pongo en negrita los cambios):

Private Sub ActualizarStock()
If MsgBox("Confirmar Pedido y Actualizar STOCK?", vbYesNo, "CONFIRMAR VENTA") = vbYes Then

Dim rst As DAO.Recordset

Set rst=Me.DetPedidos_Subformulario.Form.RecordsetClone
    With rst
        .MoveFirst
        Do While Not .EOF
        CurrentDb.Execute ("UPDATE Productos set StockActual=StockIncial-" & !Cantidad.Value & " WHERE IdProducto=" & !IdProducto.Value)
        .MoveNext
        Loop
    End With
    Me.BaseImponible = Me.TPVD / (1.21)
    Me.PreCosto = Me.TPreCompra
    Me.Recalc
Else
    Exit Sub
End If

rst.Close

Set rst=Nothing
End Sub

Y si así no te va, cambia también la línea del currentdb.Execute por esta otra:

CurrentDb.Execute ("UPDATE Productos set StockActual=StockIncial-" & rst("Cantidad") & " WHERE IdProducto=" & rst("IdProducto"))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas