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

У меня походу разбирательств с циклом всплыло такое решение:
Добавить ADOCommand c текстом:
Код:
select SUM(Price) from litems where IDTicket = null
При нажатии на кнопку сохранить изделие:
Код:
var
  TotalPrice: real;
begin
  with fMain.Items do
  begin
    FieldByName('MetallWeight').AsFloat := FieldByName('Weight').AsFloat -
      FieldByName('InsertWeight').AsFloat;
    FieldByName('Price').AsFloat := FieldByName('MetallWeight').AsFloat *
      FieldByName('Pricep1g').AsFloat;
    Post; // здесь ещё BeforePost обрабатывает качество введённой инфы
    // я так подумал, что качество Weight и InsertWeight проверять не надо, ибо сами визуальные DBEdit это делаю сами, опираясь на тип поля
  end;

  TotalPrice := VarAsType((fMain.cmdSumItem.Execute).Fields[0].Value,
    varDouble);

  maxPrice.Text := FormatFloat('0.00', TotalPrice);
  maxLoan.Text := FormatFloat('0.00', TotalPrice * 0.76);

Я пока отказался от подсчёт "налету" (временно), поэтому пересчёт находится "здесь".


Проблема нарисовалась: ADOCOmmand возвращает NULL. Из-за того, что Items находятся в режиме ltBatchOptimistic, и ADOCoomand не видит ещё не отправленного на Сервер изменений? Или where IDTicket = null имеет другой синтаксис? вот это не нравится = null. В классическом SQL where IDTicket IS Null

Пока не работает не первый вариант = null, не второй is null. Нужны параметры?
Ответить с цитированием