Показать сообщение отдельно
  #1  
Старый 27.09.2013, 12:14
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию Сумма по колонке (с добавлением)

Задачка такая:
пользователь должен добавлять в таблицу элементы: по принципу
заполняется поле А
заполняется поле Б
автоподсчёт поле С = А*Б;

Здесь первый вопрос. Если полю С выдать AutoCalc, и в onFieldCalc обрабатывать его подсчёт, то почему-то это значение не сохраняется в Таблицу. Что я делаю не так?

Далее с каждым новым элементом общая сумма по колонке С должна отображаться на форме.

Вторая часть реализована следующим образом:
Код:
var
  TotalPrice: real;
begin
  with fMain.Items do
  begin
    Post;
    TotalPrice := 0;
    First;
    while not Eof do
    begin
      TotalPrice := TotalPrice + FieldByName('Price').AsFloat;
      Next;
    end;

    maxPrice.Text := FormatFloat('0.00', TotalPrice);
    maxLoan.Text := FormatFloat('0.00', TotalPrice * 0.76);
  end;
Получается, что каждый раз программа пересчитывает предыдущие элементы. А если их будет 100, и добавляться 101 ... а если 1000.

Была мысли уйти от ADOTable и воспользоваться ADOQuery и запросом (SUM), но как-то весь проект в таблицах.) Это скорее эстетика. Может стоит отказаться от таблиц?
Ответить с цитированием