Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Actualizar owner en Documentos->Detalles (https://www.clubdelphi.com/foros/showthread.php?t=42012)

Troffed 31-03-2007 13:52:47

Actualizar owner en Documentos->Detalles
 
Tengo un TDoc que contiene una lista de TDetail, lo típico para facturas, pedidos, etc.

En cada TDetail se el TDoc que lo contiene mediante el Owner de cada uno.

En TDoc tengo unas propiedades de solo lectura que son el importe total, las unidades totales, etc.

Cuando se actualiza un TDetail ¿cual es la mejor forma de actualizar los totales del TDoc que lo contiene?

Varias posibilidades:
  1. Que la propiedad se calcule cada vez que se requiera, es decir, que recorra la lista de TDetail acumulando el valor requerido.
  2. Una variante del anterior que sería que se recorre la primera vez y se guarda el valor, mediante un flag se controlaría si se han modificado los detalles o no y entonces se devuelve el valor almacenado o se recalcula de nuevo
  3. Un valor, almacenado y recuperado de la base de datos, que se actualiza cada vez que se modifica, añade o elimina un detalle. En este caso había pensado en hacer un procedimiento en TDoc al que se le pasa el TDetail antes de modificar y el TDetail despues de modificar.
¿Que opináis?

Lepe 01-04-2007 14:08:54

Haría falta más información sobre las clases, propiedades relevantes o demás.

Yo apuntaría otra opción, Cuando se modifique un TDetail, éste informa mediante un evento al TDoc, y el TDoc Recalcula el total.

Se debería implementar 2 métodos en TDoc para evitar el Cálculo si queremos modificar todos los TDetails.

¿Conoces el BeginUpdate del TStrings, o el DisableControls del TDataset?

Saludos

Troffed 01-04-2007 23:38:19

Es más o menos lo que comentaba con la opción 3, cuando un TDetail se modifica comunica al TDoc que ha de actualizarse.

Es un buen apunte el que haces con el "BeginUpdate". Y si, los conocía... :)


La franja horaria es GMT +2. Ahora son las 07:23:48.

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