Principales respuestas
Restar 2 columnas especificas

Pregunta
-
Buen Dia!
Estoy haciendo un sistema de pago y quiero que se resten 2 columnas de una fila especifica
por ejemplo:
tengo mi tabla CARGO a si
| IdCargo | Monto | Cobrado | Saldo | Abono |
| 1 | 300.00 | 0.00 | 300 | 0.00 |
lo que quiero hacer es que al momento de ingresar el abono se reste al saldo y que en cobrado aparezca cuanto abonó , ejemplo
| IdCargo | Monto | Cobrado | Saldo | Abono |
| 1 | 300.00 | 200 | 100 | 200 |
como hago el store procedure para que se quede guardado :( alguien ayudeme
Respuestas
-
Me gusta lo que me recomiendas pero es que como estoy migrando un programa que ya tienen , no le quiero mover la verdad a si lo quiero dejar .. pero como quiera gracias :)
De acuerdo. Sin embargo no sólo debes de actualizar la columna [Cobrado], sino también la columna [Saldo]. El procedimiento debería ser el siguiente:
CREATE PROCEDURE dbo.MyProcedure @id int, @Abono decimal (9,2) AS BEGIN UPDATE MiTabla SET Cobrado = Cobrado + @Abono, Saldo = Saldo - @Abono, Abono = @Abono WHERE (IdCargo = @id); END GO
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta Josue ELi martes, 9 de agosto de 2016 15:05
-
- Editado Misael Alanis lunes, 8 de agosto de 2016 18:01
- Marcado como respuesta Josue ELi martes, 9 de agosto de 2016 14:43
Todas las respuestas
-
create proc spProcedure @monto int, @saldo int, @abono int as declare @cobrado int set @cobrado = @abono - @saldo INSERT INTO tabla(monto,cobrado,saldo,abono) values(@monto,@cobrado,@saldo,@abono); go
Blog
- Editado Misael Alanis lunes, 8 de agosto de 2016 16:23
- Marcado como respuesta Josue ELi lunes, 8 de agosto de 2016 17:45
- Desmarcado como respuesta Josue ELi lunes, 8 de agosto de 2016 17:45
-
-
-
Update NombreTablaOut Set Columna = (SELECT (campo1 - campo2) from NombreTablaIN Where CampoIN=@condicionIN) Where CampoOut =@condicionOut
EFRAIN MEJIAS C VALENCIA - VENEZUELA
- Editado Efrain Mejias Castillo lunes, 8 de agosto de 2016 16:44
-
create proc spProcedure @id int as update tabla set Cobrado = (Select (Abono - Saldo) from tabla WHERE IdCargo = @id) where IdCargo = @id go
Espero y te sirva
Blog- Propuesto como respuesta Misael Alanis lunes, 8 de agosto de 2016 16:57
- Editado Misael Alanis lunes, 8 de agosto de 2016 17:00
- Votado como útil Misael Alanis lunes, 8 de agosto de 2016 17:45
-
-
- Editado Misael Alanis lunes, 8 de agosto de 2016 18:01
- Marcado como respuesta Josue ELi martes, 9 de agosto de 2016 14:43
-
Una operación de cobranza no debería registrar los abonos efectuados sobre una misma fila. Si tienes una deuda por cobrar, lo correcto es que registres todos los abonos realizados, cada operación tiene información relevante como el monto abonado o la fecha de operación.
Te recomiendo que cambies el diseño de tablas por lo siguiente:
[DeudasPorCobrar]: idDeuda (PK), idCliente (FK), MontoDeuda, [TotalAbonos], [Saldo]
[Abonos]: idAbono (PK), idDeuda (FK), NumCuota, FechaOperacion, Abono
La tabla [DeudasPorCobrar] contiene el registro de la deuda y sobre ella puedes hacer las actualizaciones para calcular -opcionalmente- el total de pagos realizados y el saldo. Por cada abono realizado debes insertar una fila en la tabla [Abonos] de modo que la suma de los pagos menos el monto de deuda determina el saldo.
Lo dejo a tu consideración.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios. -
-
-
Me gusta lo que me recomiendas pero es que como estoy migrando un programa que ya tienen , no le quiero mover la verdad a si lo quiero dejar .. pero como quiera gracias :)
De acuerdo. Sin embargo no sólo debes de actualizar la columna [Cobrado], sino también la columna [Saldo]. El procedimiento debería ser el siguiente:
CREATE PROCEDURE dbo.MyProcedure @id int, @Abono decimal (9,2) AS BEGIN UPDATE MiTabla SET Cobrado = Cobrado + @Abono, Saldo = Saldo - @Abono, Abono = @Abono WHERE (IdCargo = @id); END GO
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta Josue ELi martes, 9 de agosto de 2016 15:05
-
-