Problema con actualizar saldos

20/09/2006 - 16:53 por sampen25 | Informe spam
Hola , tengo un problema, tengo un store procedure que actualiza saldos
de movimientos de cuentas, los campos son asi:

cod_mov cod_cuenta cod_movcuenta monto saldo ing_eg
1 7 1 100.2
100.2 1
2 7 2 50
150.2 2
3 7 3 30.6
119.6 2
4 7 4 60
179.6 1

ing_eg: 1 es ingreso, 2 es egreso

ALTER PROCEDURE [dbo].[usp_ModificarSaldos]
@saldoanterior float,
@cuenta int,
@cod_movcuenta int
AS
UPDATE movimiento
SET @saldoanterior = saldo_movimiento = CASE WHEN ing_eg_movimiento=1
THEN @saldoanterior + monto WHEN ing_eg_movimiento=2 THEN
@saldoanterior - monto
END
WHERE cod_cuenta= @cuenta and cod_movcuenta > @cod_movcuenta and

si modifico un monto por ejemplo el de 50 a 60 y le paso los parametros
del sp, se recalculan los saldos hasta ahi todo bien,el problema esta
cuando el orden la columna cod_movcuenta varia ya no siendo 1,2.3,4
sino tal vez 1,3,2,4 si actualizo el monto de 1 por ejemplo no se
actualiza el sado de 2 solo 3 y 4. Ojala alguien me pueda ayudar que es
urgente. Gracias anticipadamente
 

Leer las respuestas

#1 Miguel Egea
28/09/2006 - 15:43 | Informe spam
Bueno , supoinedo que tu campo ing_eg_movimiento cuando vale 1 indique
positivo y 2 negativo y con código sin probar (no pones scripts así que es
difícil -- dificil no, pero largo sí-- montar todo el escenario)
Supongo que usas la variable Saldo anterior para recuperar el saldo total,
luego lo añades tu en la lógica

Update Mov
set Saldomovimiento=Saldo
FROM Movimiento mov` inner join (
Select idMovimiento,(Select Sum( case ing_eg_movimiento
when 1 then saldo else -1*saldo end)
from movimiento m2
where
m2.idMovimiento<=m.idmovimiento and m2.cod_cuenta=m.codcuenta) Sald
from Movimiento m ) m2 on mov.idmovimiento=m.idmovimiento


Seguro que con el script delante se puede hacer más óptimo, pero así al
vuelo la idea la tienes


wrote in message
news:
Hola , tengo un problema, tengo un store procedure que actualiza saldos
de movimientos de cuentas, los campos son asi:

cod_mov cod_cuenta cod_movcuenta monto saldo ing_eg
1 7 1 100.2
100.2 1
2 7 2 50
150.2 2
3 7 3 30.6
119.6 2
4 7 4 60
179.6 1

ing_eg: 1 es ingreso, 2 es egreso

ALTER PROCEDURE [dbo].[usp_ModificarSaldos]
@saldoanterior float,
@cuenta int,
@cod_movcuenta int
AS
UPDATE movimiento
SET @saldoanterior = saldo_movimiento = CASE WHEN ing_eg_movimiento=1
THEN @saldoanterior + monto WHEN ing_eg_movimiento=2 THEN
@saldoanterior - monto
END
WHERE cod_cuenta= @cuenta and cod_movcuenta > @cod_movcuenta and

si modifico un monto por ejemplo el de 50 a 60 y le paso los parametros
del sp, se recalculan los saldos hasta ahi todo bien,el problema esta
cuando el orden la columna cod_movcuenta varia ya no siendo 1,2.3,4
sino tal vez 1,3,2,4 si actualizo el monto de 1 por ejemplo no se
actualiza el sado de 2 solo 3 y 4. Ojala alguien me pueda ayudar que es
urgente. Gracias anticipadamente

Preguntas similares