Вариант 1.
Считаем локально. При изменении датасета сохраняем позицию курсора, потом отключаем визуальные компоненты, проходимся по датасету суммируя, потом возвращаемся к сохраненной позиции курсора. Типа так:
Код:
var
S : Currency;
BM : Pointer;
begin
S := 0;
BM := ADOQuery1.GetBookmark;
ADOQuery1.DisableControls;
Try
ADOQuery1.First;
While Not ADOQuery1.Eof Do
Begin
S := S + ADOQuery1.FieldByName('Summa').AsCurrency;
ADOQuery1..Next;
End;
Finally
ADOQuery1.GotoBookmark(BM);
ADOQuery1.EnableControls;
End;
label1.Caption := CurrToStr(S);
end;
Вариант 2.
На тот же момент просто вызываем запрос вида:
Код:
SELECT SUM(Summa) AS Total FROM MyTable WHERE Parikmakher_id = :id
Тут надо установить id парикмахера, потом, после выполнения, вытаскиваем значение поля Total
Вариант 3.
Пользуемся бесплатным сыром. Берем что-нить типа devExpress или похожих мощных библиотек. Там обычно такие функции уже встроенны, просто делаем настройку на показ соотв. агрегатной функции.
Ну и куча промежуточных решений. У каждого есть свои плюсы и минусы.