Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Guardar datos con un Select anidado (https://www.clubdelphi.com/foros/showthread.php?t=60626)

Esteban Quito 08-10-2008 02:06:01

Guardar datos con un Select anidado
 
Hola gente.
Perdon si lo que pregunte en esta oportunidad ya lo preguntó alguien más. Es que busqué y no encontré.

Mi problema es el siguiente. Tengo una tabla que almacena préstamos y otra que almacena los pagos de dichos préstamos relacionados con un campo dentro de pagos que indica a que prestamo pertenece.

El código Sql original con el que manipulaba la tabla Prestamos era el siguiente
Código SQL [-]
Select *
From Prestamos
Order by Fecha
Con esto andaba barbaro. No tiene secretos. Ahora, cuando le anidé un Select para que por cada préstamo aparezca como un campo más la sumatoria de todos los pagos, se me complicó el ABM. Es decir no puedo modificar más esa tabla (Prestamos). La tabla Pagos se modifica de otro lado.

El código Sql con el que intento hacer lo que les describo es elsiguiente
Código SQL [-]
Select Prestamos.*,
       (Select Sum(Pagos.Monto)
        From Pagos
        Where Pagos.Prestamo=Prestamo.Numero) as PagoTotal
From Prestamos
Order by Prestamo.Fecha

El control que uso es un SQLDataSet del dbExpres, un DataSetProvider y un ClientDataSet en delphi 7 en FireBird 1.5

No se si lo que yo pretendo tiene solucion. Si me faltaron datos para explicarme mejor, por favor me lo hacen saber.

Desde ya, muchas gracias

Lepe 08-10-2008 04:40:36

Puedes usar un Query (para seleccionar) y un UpdateSql ligado a él para modificar/insertar/borrar.

También con SP se puede, pero no los he usado.

Saludos

Esteban Quito 08-10-2008 13:52:25

Muchas gracias Lepe. Ese mecanismo que me propones lo uso en Paradox con los controles BDE.
De todos modos lo acabo de solucionar poniendo el nombre de la tabla en el evento onGetTableName del DataSetProvider
Código:

procedure TFormContratos.ProviderPrestamosGetTableName(Sender: TObject;
  DataSet: TDataSet; var TableName: String);
begin
  TableName:='Prestamos';
end;

Gracias igualmente. Un abrazo para todos.


La franja horaria es GMT +2. Ahora son las 05:02:58.

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