SQL Server - Insert en tabla primaria e insert/update en otra

 
Vista:

Insert en tabla primaria e insert/update en otra

Publicado por Lilia (7 intervenciones) el 13/08/2007 19:54:03
Hola !! Espero tengan un excelente día!!

Esta vez vengo a hacerles una consulta de como podria darle solución a lo siguiente:
Pasa que tengo dos tablas: Dentrada, Detsalida y.... Existencias

Por lo que en entradas tengo dos campos:

* Detentrada:
i_nro_producto (la clave del producto)
i_nro_departamento (donde esta almacenado el producto)
f_cantidad (cantidad que entra de se producto)

* Detsalida:
i_nro_producto (la clave del producto)
i_nro_departamento (donde esta almacenado el producto)
f_cantidad (cantidad que entra de ese producto)

* Existencias: (donde se llevaria el control de la existencia de producto por departamento)
i_nro_producto (la clave del producto)
i_nro_departamento (donde esta almacenado el producto)
f_cant_entrada (cantidad que entra de ese producto)
f_cant_salida (cantidad que sale de ese producto)

Para asi crear un campo donde reste f_cant_entrada- f_cant_salida y obtener las existencias...

El problema viene cuando hago las Entradas; pues como puedo insertar en la tabla el i_nro_producto y el i_nro_departamento...

Porque lo tengo que me las inserte pero al volver hacer una entrada a algún departamento con el mismo producto me lo crea de nuevo y lo ke quiero es que me lo vaya acumulando en el registro que le corresponde..

Tengo lo siguiente:

Insert Into DETENTRADA(i_nro_entrada,i_nro_producto,f_cantidad,i_nro_departamento)
Values(@i_nro_entrada,@i_nro_producto,@i_nro_departamento)

Insert into EXISTENCIAS (i_nro_producto, i_nro_departamento) values (@i_nro_producto,@i_nro_departamento) /*Que pues si funciona si es la primera vez..
pero cuando son las siguientes!!?? lo inserta de nuevo claro!!*/

Y aqui cuando ya existe que permite actualizar, pero igual, que pasa sino existe???:

Declare @SumaE AS Float
Select @SumaE= Sum(f_cantidad)
From DETENTRADA Where i_nro_departamento = i_nro_departamento and i_nro_producto=i_nro_producto
Update EXISTENCIAS Set f_cant_entrada=@f_cantidad + IsNull(T0.f_cant_entrada,0) FROM EXISTENCIAS T0 Where i_nro_departamento=@i_nro_departamento and i_nro_producto=@i_nro_producto

Espero y me haya explicado..
De antemano muchas gracias!!!
La idea es llevar un control de existencias de cada producto por departamento..
Toda sugerencia y propuesta es muy bien recibida!!
Que tengan un excelente día!!!. . . .
Besos!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Insert en tabla primaria e insert/update en otr

Publicado por Isaias (3308 intervenciones) el 14/08/2007 01:36:48
Antes de hacer el INSERT en EXISTENCIAS, debes preguntar si ya existe, para que haga un UPDATE, algo asi:

IF EXISTS(SELECT i_nro_producto FROM EXISTENCIAS WHERE i_nro_producto = @i_nro_producto AND i_nro_departamento = @i_nro_departamento)
BEGIN
-- Hago el UPDATE
UPDATE EXISTENCIAS SET ..................................
END
ELSE
BEGIN
-- Hago el INSERT
Insert into EXISTENCIAS (i_nro_producto, i_nro_departamento) values (@i_nro_producto,@i_nro_departamento)
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insert en tabla primaria e insert/update en otr

Publicado por Lilia (7 intervenciones) el 14/08/2007 20:33:25
Muchas gracias por responder!!
Sime ha funcionado!!
Solo que me pasa algo!!!
Dime..como puedo hacerle cuando no existe el producto??
Para insertar la cantidad??.. en la tabla de existencias, pues lo tiene ke tomar de las entradas..

Como podria hacer para ke al campo f_cant_entrada le asigne el valor que tiene f_cantidad ...

si f_cantidad vale '5' que f_cant_entada valga '5'..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insert en tabla primaria e insert/update en otr

Publicado por Isaias (3308 intervenciones) el 14/08/2007 23:32:22
Lilia

Ese, es un problema de DISEÑO, ¿Como puedes darle ENTRADA en existencias a un PRODUCTO que no tienes en catalogo?

Aunque tu misma te estas contestando, si solo tienes la ENTRADA del producto, solo tendras el CODIGO (del producto), podrias tomar la decision de darlo de alta en PRODUCTO, pero, ¿Y los demas datos?

¿Sera acaso que no me quedo muy clara tu pregunta?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insert en tabla primaria e insert/update en otr

Publicado por Lilia (7 intervenciones) el 15/08/2007 23:14:29
Hola!!
De hecho si existe pues tengo una tabla de PRODUCTOS, donde están dados de alta, ese no es el problema..

A lo que me refiero es cuando no existe en mi tabla de EXISTENCIAS, vaya, el problema se presenta cuando capturo mi primer Entrada de ese producto y departamento para almacenarlo en EXISTENCIAS.. que igual se alamacena al mismo tiempo en las Entradas..

Espero haya sido explicita ésta vez..
De antemano agradezco todas tus atenciones!!. .
Que tengas un excelente día!!. .
Besos!!!. . . .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insert en tabla primaria e insert/update en otr

Publicado por Isaias (3308 intervenciones) el 16/08/2007 18:39:18
Pues sigo sin entender, si ya estas validando con IF EXISTS(...................), seria tan facil como que si NO EXISTE, hacer el insert en ENTRADAS.

¿Cierto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insert en tabla primaria e insert/update en otr

Publicado por Lilia (7 intervenciones) el 01/09/2007 01:24:12
Listo ya di con el problema!!!
Que casi me desmayo!!!
Es demasiado simple...

Me faltaba indicarle el campo de f_cantidad...
Muchas gracias!!
Gracias!!
Que tengas un excelente día!!!
Besos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar