У меня походу разбирательств с циклом всплыло такое решение:
Добавить 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. Нужны параметры?