Цитата:
Сообщение от YuliyaKar
Здравствуйте!!!
Я делаю программу погрузки судна, где мне надо вычислить динамическую остойчивость, а она вычисляется рекуррентной формулой.
Есть таблица http://cs413218.vk.me/v413218232/4d82/hJvBvamCAc0.jpg
(на рисунку внизу возле диаграммы)
и динам остойчивость вычисляется след образом
вторая строка столбца Ld вычисляется тк
Ld [2]=Lst[1]+Lst[2]+Ld[1]
|
Вообще-то над таблицами так не издеваются.
Чтобы вычислить выражение "Ld [2]=Lst[1]+Lst[2]+Ld[1]", тебе нужно переместиться к записи с кодом 1, прочитать оттуда значения полей "Lst" и "Ld", потом переместиться к записи с кодом 2, прочитать оттуда значение поля "Lst", всё сложить и записать результат в поле "Ld".
И всё это
вряд-ли может располагаться в обработчике события "OnCalcFields".
Пример вычисления выражения "Ld [2]=Lst[1]+Lst[2]+Ld[1]":
Код:
var
Sum: Double;
begin
Sum := 0;
if Table5.Locate('Kodo', 1, []) then
Sum := Sum + Table5.FieldByName('Lst').Value + Table5.FieldByName('Ld').Value
else
raise Exception.Create('Не найдена нужная запись');
if Table5.Locate('Kodo', 2, []) then
Sum := Sum + Table5.FieldByName('Lst').Value
else
raise Exception.Create('Не найдена нужная запись');
Table5.Edit;
Table5.FieldByName('Ld').Value := Sum;
Table5.Post;
end;