none
Sumar valores de una tabla a otra RRS feed

  • Pregunta

  • Hola:

    Me gustaría saber si es posible, mediante una consulta SQL sumar unos valores de una tabla a otra, en Access 2003. Lo explico con un caso práctico:

    Tengo una tabla Articulos, en la cual entre otros campos, hay Id_Articulo y Stock

    Por otro lado tengo una tabla Lineas_Venta, que almacena (entre otros datos) Id_Articulo y Cantidad.

    Lo que planteo es si hay alguna consulta SQL que me permita, una vez guardada la Linea_Venta en su tabla corespondiente, sumar la Cantidad de un articulo concreto (por su ID_Articulo)  de Lineas_Venta al Stock de Articulos.

    Lo hago para ahorrarme leer el Stock de articulos, sumarle y volverle a guardar.

    sábado, 10 de abril de 2010 10:59

Respuestas

  • Esta puede ser una solución (otra podría ser sin el INNER JOIN y con una pequeña modificación de la cadena):

    cadSQL="UPDATE Articulos INNER JOIN Lineas_Venta ON Lineas_Venta.id_articulo = Articulos.id_articulo SET Articulos.stock = Articulos.stock + Lineas_Venta.Cantidad WHERE ((id_articulo=tuvariable));"

    tuconn.execute cadSQL, cuantos

    if cuantos>0 then

    msgbox "se actualizaron " & cuantos & " registros."

    end if

    ...

    Donde tuvariable es el id del artículo que estás actualizando, porque si no lo filtras, actualizarías todos los registros (eso se que lo sabes, pero como ex-docente no pierdo la costumbre de explicar ;)

    Cordialmente

    CJ

    sábado, 10 de abril de 2010 16:16

Todas las respuestas

  • Esta puede ser una solución (otra podría ser sin el INNER JOIN y con una pequeña modificación de la cadena):

    cadSQL="UPDATE Articulos INNER JOIN Lineas_Venta ON Lineas_Venta.id_articulo = Articulos.id_articulo SET Articulos.stock = Articulos.stock + Lineas_Venta.Cantidad WHERE ((id_articulo=tuvariable));"

    tuconn.execute cadSQL, cuantos

    if cuantos>0 then

    msgbox "se actualizaron " & cuantos & " registros."

    end if

    ...

    Donde tuvariable es el id del artículo que estás actualizando, porque si no lo filtras, actualizarías todos los registros (eso se que lo sabes, pero como ex-docente no pierdo la costumbre de explicar ;)

    Cordialmente

    CJ

    sábado, 10 de abril de 2010 16:16
  • Ok, perfecto. Es exactamente lo que buscaba.
    sábado, 10 de abril de 2010 16:26
  • Me complace y estas de suerte porque he 'acertado' varias veces. Gracias por marcar las respuestas.

    Por otro lado, imagino que 'sacas' e 'ingresas' al stock por lo que el signo de suma podría cambiar, ¿cierto?.

    Cordialmente, CJ

    sábado, 10 de abril de 2010 16:29
  • Si claro, en lo que serían Albaranes o Facturas de Compra sumo al stock, y en lo que serían Ventas resto (salvo que el usuario introduzca una cantidad negativa, que significaría que devuelve algo). Aunque en Ventas puede interesarme mas realizar la resta por código en vez de por SQL, para asegurarme que no se pueda vender mas de lo que hay.

    Es la idea que me surgío en un primer instante. Ahora, analizandolo más a fondo tengo que sopesar si me merece la pena hacerlo de forma diferente para ambos (Compras y Ventas) con lo que implican las sentencias INNER JOIN o aplicar reutilización de código a costa de una consulta más a la base de datos.
    sábado, 10 de abril de 2010 16:37