Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Pregunta sobre SQL a los gurus...(BALANCE) (https://www.clubdelphi.com/foros/showthread.php?t=7584)

txemag 19-02-2004 23:07:02

Pregunta sobre SQL a los gurus...(BALANCE)
 
A ver si el oraculo me ilumina con su "sapiencia", estoy buscando una consulta los suficientemente birguera para calcular el balance de una tabla, es decir:

Si tenemos los datos:

Debe Haber Balance
- 9 9
3 - 6
1 - 5
- 2 7


La cosa es como poder sacar la columna balance mediante una consulta, y asi no tener que grabar fisicacamente el campo. He buscado por inet y veo que varias personas preguntan lo mismo, pero no hay ninguna respuesta que solucione el problema.

Animo y gracias....;)

delphi.com.ar 19-02-2004 23:08:14

¿Qué es lo que sería Balance?... ¿Qué motor utilizas?... ¿Puedes usar un store procedure?

guillotmarc 19-02-2004 23:45:38

Como comenta el compañero, la solución a tu problema está en utilizar un procedimento almacenado. Pero si quieres una orientación sobre como hacerlo, deberás indicar que servidor sql utilizas, puesto que cada uno tiene sus características propias.

Si en lugar de utilizar un servidor sql, utilizas una tabla plana (Access, dBase, Paradox, ...), olvídate del tema, y ve pensando en como hacerlo en el Dataset de Delphi.

Saludos.

jachguate 19-02-2004 23:48:13

Select debe, haber, haber - debe balance
from tabla;

Hasta luego.

;)

txemag 20-02-2004 00:24:07

Cita:

Empezado por guillotmarc
Como comenta el compañero, la solución a tu problema está en utilizar un procedimento almacenado. Pero si quieres una orientación sobre como hacerlo, deberás indicar que servidor sql utilizas, puesto que cada uno tiene sus características propias.

Lo primero daros las gracias, el motor de base de datos que uso es FIREBIRD 1.5, si me podeis orientar con ese stored procedure me hariais un buen favor.

Salu2...

txemag 20-02-2004 00:30:49

Hola.

En Firebird es muy sencillo de hacer. Simplemente debes crear un procedimiento almacenado de este estilo :

Código:

SET TERM ^ ;
CREATE PROCEDURE BALANCE
RETURNS (
        DEBE NUMERIC(18,4),
        HABER NUMERIC(18,4),
        SALDO NUMERIC(18,4))
AS
begin
  SALDO = 0;
  for select DEBE, HABER
          from TABLA
          into :DEBE,  :HABER
  do begin
        SALDO = SALDO + coalesce(HABER, 0) - coalesce(DEBE, 0);
        suspend;
  end
end
^
SET TERM ; ^

En la aplicación solo tienes que hacer una consulta del tipo :

select * from BALANCE

Saludos.

txemag 20-02-2004 18:09:12

Muchas gracias, funciona perfectamente :D


Eres grande guillotmarc. :rolleyes:

Salu2


La franja horaria es GMT +2. Ahora son las 10:23:38.

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