Io, prima di tutto, cambierei la dichiarazione della tua variabile Sum da Single a Variant.
Gli eventi legati ai controlli visuali a volte possono dare dei problemi, cosa che mi capita spesso proprio con le DBGrid.
Devi tenere in considerazione che non é possibile scandire, ogni volta che viene modificato un valore, tutti i record della tabella per ottenere la somma di ogni campo.
Procederei in questo modo:
1- Subito dopo l'apertura della tabella o del dataSet richiami una
funzione che ti restiuisce la somma della colonna interessata.
2- All'evento OnValidate legato al campo implementerei una procedura che sottrae alla variabile somma il vecchio valore della tupla e somma il nuovo valore.
Puoi usare il metodo OldValue e NewValue legati alla classe TFields
Ti suggerisco un procedimento del genere solo per ridurre i tempi necessari a far scorrerre tutti i record.
Presumo possa essere una soluzione accettabile...
![]()