** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Problema con codigo para dismunuir Stock
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Problema con codigo para dismunuir Stock

 Responder Responder
Autor
Mensaje
maxpro Ver desplegable
Colaborador
Colaborador


Unido: 04/Marzo/2006
Localización: Argentina
Estado: Sin conexión
Puntos: 1556
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita maxpro Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Problema con codigo para dismunuir Stock
    Enviado: 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
Arriba
maxpro Ver desplegable
Colaborador
Colaborador


Unido: 04/Marzo/2006
Localización: Argentina
Estado: Sin conexión
Puntos: 1556
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita maxpro Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4830
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita javier.mil Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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

 


Editado por javier.mil - 29/Mayo/2023 a las 18:19
Arriba
maxpro Ver desplegable
Colaborador
Colaborador


Unido: 04/Marzo/2006
Localización: Argentina
Estado: Sin conexión
Puntos: 1556
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita maxpro Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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


Editado por maxpro - 29/Mayo/2023 a las 21:37
-------Maxpro-------

San Luis - Argentina
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable