Показать сообщение отдельно
  #15  
Старый 26.05.2008, 13:45
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если надо куда-то выводить кроме как на форме самого заказа, то надо делать физическое поле, вычисляемое по триггеру.

Если достаточно показать на самой форме, то можно посчитать прямо там без всяких полей.

Как я понял, у тебе 2 таблички - работы и детали. Делаешь обработчик AfterPost, в котором пробегаешься по табличкам и суммируешь то, что надо. Если есть возможность удаления, то еще afterDelete такой-же.
Если надо поизвращаться, что бы было красиво, то еще нужны 2 возможности - отключение контролов и букмарки. Отключение контролов -для тго что бы не мельтишило на экране пока бегаешь по табличке, а букмарки - для того, что бы потом восстановить исходную позицию курсора.

Суммирование одной таблицы (названия от балды):
Код:
var
  B : Pointer;
  S : Currency;
begin
  S := 0;
  Table1.DisableControls;
  B := Table1.GetBookmark;
  Try
    Table1.First;
    While Not Table1.Eof Do
      begin
        S := S + Table1.FieldByName('SUMMA').AsCurrency;
        Table1.Next;
      end;
  Finally
    Table1.GotoBookmark(P);
    Table1.FreeBookmark(B);
    Table1.EnableControls;
  End;

  // Edit1 - типа сумма
  Edit1.Text := CurrToStr(S);
end;
Ответить с цитированием