Imprimir página | Cerrar ventana

Problema con codigo para dismunuir Stock

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86702
Fecha de impresión: 27/Marzo/2026 a las 06:01


Tema: Problema con codigo para dismunuir Stock
Publicado por: maxpro
Asunto: Problema con codigo para dismunuir Stock
Fecha de publicación: 28/Mayo/2023 a las 20:28
Hola.

Tengo un código que utilizo desde un formulario que luego de cargados los datos en el formulario principal (datos del cliente, etc) paso al Subformulario para cargar el "Codigo", "Producto" y "Precio" hasta ahi todo bien, luego tengo un boton Guardar cuyo codigo es:

Private Sub Guardar_Click()
Dim rs As Recordset
    Set rs = Me!OrdenDeTrabajoSUB.Form.RecordsetClone
    
    rs.MoveFirst
    
    Do Until rs.EOF
        ' Obtener el código del producto
        Dim Codigo As String
        Codigo = rs("Codigo")
        
        ' Actualizar la tabla DisminuirStock para el producto
        DoCmd.SetWarnings False
        DoCmd.RunSQL "UPDATE DisminuirStock SET DisminuirStock.CantVentas = [tbSalidas]![CantVentas]-" & rs("Cantidad") & " WHERE (((DisminuirStock.Id)='" & Codigo & "'));"
        DoCmd.SetWarnings True
        rs.MoveNext
    Loop
    
    rs.Close
    Set rs = Nothing
End Sub

Cabe aclarar que tengo una consulta llamada "DisminuirStock" que es la que menciona el codigo y cuya SQL es:

SELECT tbProductos.Id, tbSalidas.CantVentas, tbSalidas.FechaModif
FROM tbProductos LEFT JOIN tbSalidas ON tbProductos.Id = tbSalidas.Id_Venta;

El problema es que funcionaba perfectamente, recorria los productos cargados e iba descontando del stock los productos cargados, el problema es que ha dejado de funcionar, me da el siguiente error:

"Se ha producido el error 13 en tiempo de ejecucion, no coinciden los tipos y se me marca en amarillo la siguiente linea:  Set rs = Me!OrdenDeTrabajoSUB.Form.RecordsetClone

Sinceramente lo expongo en el foro porque me tiene loco, no se que lo puede estar causando, teniendo en cuenta que funcionaba correctamente.

Saludos


-------------
-------Maxpro-------

San Luis - Argentina



Respuestas:
Publicado por: maxpro
Fecha de publicación: 28/Mayo/2023 a las 20:46
Hola
bueno, despues de darle mil vueltas y escribir uno que otro y siempre frustracion, logre que vuelva a funcionar, por si a alguien le sirve. el nuevo codigo es:

Private Sub Guardar_Click()
    Dim rs As DAO.Recordset
    Set rs = Me![OrdenDeTrabajoSub].Form.RecordsetClone
    
    rs.MoveFirst
    
    Do Until rs.EOF
        ' Obtener el código del producto
        Dim Codigo As String
        Codigo = rs("Codigo")
        
        ' Actualizar la tabla DisminuirStock para el producto actual
        Dim strSQL As String
        strSQL = "UPDATE DisminuirStock SET DisminuirStock.CantVentas = DisminuirStock.CantVentas - " & rs("Cantidad") & " WHERE DisminuirStock.Id = '" & Codigo & "'"
        CurrentDb.Execute strSQL
        
        rs.MoveNext
    Loop
    
    rs.Close
    Set rs = Nothing
End Sub

Ya se puede cerrar el hilo
Saludos


-------------
-------Maxpro-------

San Luis - Argentina


Publicado por: javier.mil
Fecha de publicación: 29/Mayo/2023 a las 18:15
Hola Carlos !

El campo de STOCK es un campo que debería ser calculado y No guardar el dato del stock en una Tabla ya que:
STOCK = + ENTRADAS - SALIDAS - PERDIDAS - MERMAS

Entiendo que muchas veces por rapidez de calculo del programa sea conveniente guardar ese dato en una Tabla , peroooo quizás es algo que deberías considerar, valorar y tener en cuenta ya que evitarías muchos errores de stock

Saludos

 


-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: maxpro
Fecha de publicación: 29/Mayo/2023 a las 21:35
Hola Javier.

Lo hago lo mas simple y efectivo posible.

Tengo un Form "Productos" (naturalmente aqui va todo lo relacionado a productos que el cliente va armando en una hoja de excel y luego lo va importando).
Tengo 2 Subform. "Entradas" (esto se maneja manualmente a medida que van comprando) y "Salidas" que aqui es donde entra el codigo.
El codigo simplemente debe agregar la cantidad de productos vendidos, luego de elegir todos los productos vendidos, da click a un boton y se ejecuta el codigo que va agregando al Subform. "Salidas" la cantidad vendida, a cada producto le va agragando la cantidad que figura en "Cantidad" en base al codigo del producto que esta en el campo "Codigo". esto con una consulta "DismunuirStock" donde estan los campos que me interesan de la tabla "Salidas"

Parece media engorrosa la explicación pero la funcionalidad es muy simple, tu mención de PERDIDAS y MERMAS no aplicaria en este caso, quizas en otra clase de productos si como comestibles por ejemplo.

Igual gracias porque siempre aportas algo para ayudar.

Saludos
EDITO: para corregir errores ortograficos


-------------
-------Maxpro-------

San Luis - Argentina



Imprimir página | Cerrar ventana