![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#14
|
|||
|
|||
|
Hola de nuevo:
Bueno, ese problema que comentas lo tendremos siempre que lancemos la consulta SELECT SUM(), independientemente que usemos BeforePost o AfterPost o de que incluyamos en la consulta el registro "actual" (el que estábamos insertando). Si no hay ningún campo (FechaHora, NumInsercion ...) que nos permita saber qué registros son anteriores al actual (es decir que sumen el saldo anterior), sólo nos servirá la consulta para inserciones, y en el caso de modificaciones deberíamos implementar algo así: Código:
procedure BeforeEdit;
begin
AnteriorCantidad := Total;
end;
procedure BeforePost;
begin
if DataSet.State = dsInsert then
begin
ConsultaSuma.Open; // previo paso de parámetros
SaldoAcu := ConsultaSuma['SUMA'].AsCurrency + Table1Total.AsCurrency
end
else SaldoAcu := SaldoAcu + Total - AnteriorCantidad;
end;
SELECT SUM(TOTAL) FROM INGRESOS WHERE FECHAHORA <= :fecha o bien, si los números de la primary key son correlativos por orden de inserción: SELECT SUM(TOTAL) FROM INGRESOS WHERE id_ingreso < :id donde los parámetros :fecha y :id son los valores que estamos editando.
__________________
Guía de Estilo |
|
|
|