Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   SQL que actualice campo saldo arrastrado (https://www.clubdelphi.com/foros/showthread.php?t=9411)

Tomás 22-04-2004 18:50:08

SQL que actualice campo saldo arrastrado
 
Hola a todos:

Tengo una tabla IB con 6 campos NORDEN, FECHA, CONCEPTO, INGRESO, GASTO, SALDO conectada con IBDataBase, IBTransaction, IBDataSet, y ordenada for FECHA

El campo SALDO va arrastrando el saldo de la cuenta, por lo que al agregar un apunte se situa donde le corresponde por su fecha y después recorro la tabla y actualizo el campo SALDO (y el campo NORDEN).

Código:

NORDEN, FECHA,        CONCEPTO, INGRESO, GASTO, SALDO
0          31-12-2003  Anterior...                            525
1          01-01-2004  Cuotas            200                725
2          02-02-2004  Seguro                      500      225
3          03-03-2004  Limpieza                      25      200

No tengo problemas de demora porque siempre tendrá pocos registros, pero quisiera saber si hay alguna sentencia SQL que realice esta actualización del saldo arrastrado y del NORDEN.

Muchas gracias. Tomás.

jachguate 22-04-2004 20:02:43

esta sentencia lo haria... pero es bastante mas lenta que hacer un ciclo que arrastre el saldo y actualice el campo.
Código:

Update caja c1
  set saldo = (select sum(nvl(ingreso, 0) - nvl(gasto, 0))
                  from caja c2
                where c2.norden < c1.norden)
              + nvl(ingreso, 0) - nvl(gasto, 0);

la función nvl es una función que te devuelve el valor del segundo parámetro si el primero es null. Tengo entendido que hay alguna udf en interbase que hace esa conversión, aunque no se cual es ni el nombre de la función... eso ya será tu tarea investigarlo.

También podes hacerlo con un stored procedure, pero la lógica seria la misma que en delphi, con la ventaja que no tenes que hacer viajar los datos al cliente.

Hasta luego.

;)

roman 22-04-2004 20:18:29

Amigo jachguate, ¿podrías cortar la sentencia sql en varias líneas?. Mi monitor no da el ancho :p

jachguate 22-04-2004 20:37:25

hecho! :p :p

Tomás 23-04-2004 16:14:04

Muchas gracias jachguate por la orientación, aunque si dices que con esa sentencia es más lento me da igual dejarlo como está, pero lo probaré porque la velocidad en mi caso no es ningún problema ya que hay pocos registros.

De todas formas investigaré un poco con las ideas que me das.

Un saludo. Tomás.


La franja horaria es GMT +2. Ahora son las 23:45:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi