Totalizacion

13/10/2008 - 18:07 por GianCarlos | Informe spam
Hola,

Estoy tratando de totalizar mi orden de compras, pero no me guarda la
informacion en la orden de compras respectiva, me lo guarda en la siguiente
orden de compras.
No se como decirle a mi procedimiento que tiene que comparar los po id en
las dos tablas despues si son iguales sumar los campos Linetotal que estan en
el la tabla "podetl" y despues guardar el resultado en el campo subtotal en
la tabla porder.
lo que tengo hasta ahora es esto.
SELECT @Subtotal = SUM(LineTotal)
FROM POdetl
WHERE POID = POID
GROUP BY POID


INSERT INTO Porder
(Subtotal)
VALUES(@SubTotal)

si alguien me puede dar una mano por favor.

Gracias

Preguntas similare

Leer las respuestas

#1 Ele
13/10/2008 - 20:31 | Informe spam
Hola
al parecer esta correcto pero me llama la atencion en la condicion WHERE
POID = POID esto no te lleva a ningun lado porque es el mismo campo lo cual
contiene el mismo valor , mejor cuentanos que hace tu procedimiento solo
inserta o tambien actualiza?
si solo inserta; intenta algo asi

INSERT INTO Porder (POID, Subtotal)
SELECT
POID,
SUM(LineTotal)
FROM POdetl
WHERE (tus condiciones)
GROUP BY POID


"GianCarlos" escribió en el mensaje
news:
Hola,

Estoy tratando de totalizar mi orden de compras, pero no me guarda la
informacion en la orden de compras respectiva, me lo guarda en la
siguiente
orden de compras.
No se como decirle a mi procedimiento que tiene que comparar los po id en
las dos tablas despues si son iguales sumar los campos Linetotal que estan
en
el la tabla "podetl" y despues guardar el resultado en el campo subtotal
en
la tabla porder.
lo que tengo hasta ahora es esto.
SELECT @Subtotal = SUM(LineTotal)
FROM POdetl
WHERE POID = POID
GROUP BY POID


INSERT INTO Porder
(Subtotal)
VALUES(@SubTotal)

si alguien me puede dar una mano por favor.

Gracias
Respuesta Responder a este mensaje
#2 GianCarlos
13/10/2008 - 20:45 | Informe spam
Mi procedimiento solo inserta la parte de el detalle de la orden de compras
que son los productos. y los guarda en la tabla "podetl" pero el subtotal lo
quiero guardar en la tabla de el encabezado que seria la tabla "porder". Mi
llave primaria es poid y mi llave foranea es poid.
Aqui te mando mi procedimiento para ver si me ayudas porque no se que otra
condicion le podria sino es la de poid.

Gracias por ayudarme

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[InsertPODetl]
(
@ItemID int,
@Qty int,
@Description1 varchar(50) OUTPUT,
@Price1 int OUTPUT,
@LineTotal money OUTPUT
)
AS
DECLARE
@POID int,
@Description varchar(50),
@Price decimal(18,2),
@SubTotal money
SET @POID = 0

/* SET NOCOUNT ON */
SET NOCOUNT ON;
SELECT @POID = MAX(POID)
FROM PORDER


SELECT @Description = Description,@Price = Price,@Description1 =
Description,@Price1 = Price
FROM Items
WHERE (Items.ItemID = @ItemID);

INSERT INTO PODetl
(POID,ItemID,Description,Price,Qty)
VALUES(@POID,@ItemID,@Description,@Price,@Qty)

SELECT @LineTotal = LineTotal
FROM PODETL

SELECT @Subtotal = SUM(LineTotal)
FROM POdetl
WHERE POID = POID
GROUP BY POID


INSERT INTO Porder
(Subtotal)
VALUES(@SubTotal)




Respuesta Responder a este mensaje
#3 Ele
14/10/2008 - 02:39 | Informe spam
Revisemos la sig sentencia:

SELECT @POID = MAX(POID)
FROM PORDER
aqui estas obteniendo la ultima llave del encabezado le vas a anexar la
nueva tupla dela tabla PODetl (detalle)?

si tu respuesta es afirmativa pues solo realiza la suma SELECT @Subtotal =
SUM(LineTotal) FROM POdetl WHERE POID = @POID
ojo en la condicion estamos buscando la llave que esta en la variable @POID
y no en el mismo campo como lo has escrito (WHERE POID = POID)

si tu respuesta es no
entonces tienes que calcular la nueva llave algunos programadores estilan
poner la llave como identity para que en "automatico" se genere (revisa los
BOL si tienes duda con esto), otros programadores realizan un suma :
SELECT @POID = @POID + 1
con validacion por si no hay datos SELECT @POID = IsNull(@POID,0) + 1




"GianCarlos" escribió en el mensaje
news:
Mi procedimiento solo inserta la parte de el detalle de la orden de
compras
que son los productos. y los guarda en la tabla "podetl" pero el subtotal
lo
quiero guardar en la tabla de el encabezado que seria la tabla "porder".
Mi
llave primaria es poid y mi llave foranea es poid.
Aqui te mando mi procedimiento para ver si me ayudas porque no se que otra
condicion le podria sino es la de poid.

Gracias por ayudarme

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[InsertPODetl]
(
@ItemID int,
@Qty int,
@Description1 varchar(50) OUTPUT,
@Price1 int OUTPUT,
@LineTotal money OUTPUT
)
AS
DECLARE
@POID int,
@Description varchar(50),
@Price decimal(18,2),
@SubTotal money
SET @POID = 0

/* SET NOCOUNT ON */
SET NOCOUNT ON;
SELECT @POID = MAX(POID)
FROM PORDER


SELECT @Description = Description,@Price = Price,@Description1 > Description,@Price1 = Price
FROM Items
WHERE (Items.ItemID = @ItemID);

INSERT INTO PODetl
(POID,ItemID,Description,Price,Qty)
VALUES(@POID,@ItemID,@Description,@Price,@Qty)

SELECT @LineTotal = LineTotal
FROM PODETL

SELECT @Subtotal = SUM(LineTotal)
FROM POdetl
WHERE POID = POID
GROUP BY POID


INSERT INTO Porder
(Subtotal)
VALUES(@SubTotal)




Respuesta Responder a este mensaje
#4 GianCarlos
15/10/2008 - 15:05 | Informe spam
Ele,

El select que tu mencionas no es el que deberia utilizar para hacer la
comparacion, ese select es utilizado para anadir el numero de orden de
compras de el encabezado a el detalle.
El select que debe utilizar es el siguiente

SELECT @Subtotal = SUM(LineTotal)
> FROM POdetl
> WHERE POID = POID
> GROUP BY POID
>



que es donde selecciona los totales por linea y hace un subtotal con ellos y
los debe de guardar en la tabla PORDER, el cual me lo hace pero no en el
numero de orden de compras que corresponde, me lo esta guardando en la
siguiente orden de compras que porsupuesto esta en blanco.
Ya trate algo asi y no funciono.

SELECT @Subtotal = SUM(LineTotal)
FROM POdetl
WHERE PORDER.POID = PODETL.POID
GROUP BY POID
Que mas podria hacer
Respuesta Responder a este mensaje
#5 Carlos M. Calvelo
15/10/2008 - 16:05 | Informe spam
Hola GianCarlos,

On 13 okt, 18:07, GianCarlos
wrote:
Hola,

Estoy tratando de totalizar mi orden de compras, pero no me guarda la
informacion en la orden de compras respectiva, me lo guarda en la siguiente
orden de compras.
No se como decirle a mi procedimiento que tiene que comparar los po id en
las dos tablas despues si son iguales sumar los campos Linetotal que estan en
el la tabla "podetl" y despues guardar el resultado en el campo subtotal en
la tabla porder.
lo que tengo hasta ahora es esto.
SELECT @Subtotal = SUM(LineTotal)
FROM POdetl
WHERE POID = POID
GROUP BY POID

INSERT INTO Porder
(Subtotal)
VALUES(@SubTotal)

si alguien me puede dar una mano por favor.




update Porder
set Subtotal (select sum(LineTotal) from POdetl where POID=Porder.POID)

Esto calcula los Subtotal para todos los Porder.
Si solo quieres uno específico añades:

where POID = @POID

donde en la variable @POID esta el id de la orden.

Saludos,
Carlos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida