Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-04-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Poder: 22
Tomás Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 22-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 22-04-2004 a las 20:37:05. Razón: cortar en varias lineas el SQL
Responder Con Cita
  #3  
Antiguo 22-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Amigo jachguate, ¿podrías cortar la sentencia sql en varias líneas?. Mi monitor no da el ancho
Responder Con Cita
  #4  
Antiguo 22-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
hecho!
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 23-04-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Poder: 22
Tomás Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:46:35.


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