Esta es una parte de mi procedimiento almacenado en el que hago una inserción en el kardex cada vez que se
registra una compra....
-----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
-- REGISTRO EN LA TABLA DE KARDEX LAS ENTRADAS DE LAS
-- MERCADERIAS COMPRADAS
-----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
declare @CodProd as varchar(80)
declare @Cant as numeric(38,10)
declare @VunIngreso as numeric(38,10)
declare @VtoIngreso as numeric(38,10)
declare @NuevaCantidad as numeric(38,10)
declare @NuevoVTSaldo as numeric(38,10)
-- la parte de la subconsulta la solucioné con un cursor
-- tengo entendido que esto no es óptimo por lo de los bloqueos
DECLARE curDetCompra CURSOR FOR SELECT CodProd_dtc,
@FechaCompra_com,
(Cant_dtc*Rela_dtc),
(Vt_dtc / (Cant_dtc*Rela_dtc)),
Vt_dtc
FROM tabDetCompra where NumCompra_dtc = @NumeroCompra
ORDER by Item_dtc asc
OPEN curDetCompra
FETCH NEXT FROM curDetCompra into @CodProd, @FechaCompra_com, @Cant, @VunIngreso, @VtoIngreso
WHILE @@FETCH_STATUS = 0
BEGIN
set @NuevaCantidad = @Cant + dbo.UltimaCantKardex(@CodProd)
set @NuevoVTSaldo = @VtoIngreso + dbo.UltimoVTKardex(@CodProd)
INSERT INTO tabKardex(
CodProd_kar,
Concepto_kar,
Fecha_kar,
FecRegBD_kar,
CantIngreso_kar,
VuIngreso_kar,
VtIngreso_kar,
CantSaldo_kar,
VuSaldo_kar,
VtSaldo_kar)
values (
@CodProd,
'COMPRA',
@FechaCompra_com,
getdate(),
@Cant,
@VunIngreso,
@VtoIngreso,
@NuevaCantidad,
@NuevoVTSaldo / @NuevaCantidad,
@NuevoVTSaldo)
FETCH NEXT FROM curDetCompra into @CodProd, @FechaCompra_com, @Cant, @VunIngreso, @VtoIngreso
END
close curDetCompra
DEALLOCATE curDetCompra
-----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
Quería seleccionar todos los datos de la tabla detalle de compra e insertarlos en la tabla de kardex, esto con subconsulta
se podia solucionar, lo que no pude y no sé si se podrá es si al momento de insertar actualizar los valores de los saldos....
Sin embargo con el cursor le solucioné pero me quedé con las ganas de meter todo en una subconsulta...
Claro que con un disparador también se puede. ¿Qué será mejor dejar el cursor o crear un disparador para que me actualice los valores?. Que será más óptimo?