Я не совсем уверен, что вы имеете в виду
последнее поле не размещать на SQL таблицы
Если «последнее поле» вы имеете в виду это ваш «Cemi» один и, который является столбцом, который находится в таблице на вашем SQL Server, он не будет отправлен назад, если вы определили его как вычисленное поле в своем AdoQuery1 в O инспектор bject. Поля с FieldKind
из fkCalculated
являются локальными для AdoQuery.
Просто присваивать значение вычисленному полю достаточно, чтобы «отправить» его локально в AdoQuery, как я думаю, вы знаете. Что вы хотите сделать, чтобы отладить свою проблему (потому что такие читатели, как я, не могут отлаживать ее), проще понять, какое значение, если таковое имеется, -.
С этой точки зрения ваш код страдает от «преждевременной оптимизации», что затруднит вам увидеть, что происходит не так. Попробуйте это вместо:
В своем ADOQuery1CalcFields объявите локальную переменную для каждого из полей, к которым вы обращаетесь, включая вычисленную. Выберите типы переменных в соответствии с полями:
var
Boyuk1 : Double; // or Integer, etc
[...]
Cemi : Double;
присваивают значения локальных переменных, используя AsXXXX (типа) полей:
Cemi := 0;
if not AdoQuery1.FieldByName('Boyuk1').IsNull then
Cemi := Cemi + AdoQuery1.FieldByName('Boyuk1').AsFloat;
[etc]
Таким образом, по крайней мере, вы будете иметь возможность чтобы увидеть точку, в которой расчет идет не так (если это так).
Я использовал FieldByName(). AsFloat, а не FieldValues [], потому что FieldValues [] - это вариант, который может быть Null, и вы не хотите, чтобы при назначении ему значений, которые сами по себе быть вариантами.
Также
Убедитесь, что AutoCalcFields
установлен в Справедливо для AdoQuery1.
Поместите контрольную точку отладчика в первую строку ADOQuery1CalcFields. Скомпилируйте и запустите и убедитесь, что точка останова попала - если нет, вы получите ответ. Выполните одноэтапный отладчик через каждую строку процедуры и, после последней строки, используйте Ctrl-F7 для оценки значения AdoQuery1.FieldByName ('Cemi'). AsFloat.
Какое имя поля в таблице, в которую вы хотите отправить поле calc? – nolaspeaker