Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > ADOQuery и вычисляемые поля


Автор: KeyLord 17.12.2008, 10:46
Приветствую.
Прошу помочь мне с одной проблемкой.

есть ADOQuery
SELECT COUNT(*) AS kol  FROM childrenid WHERE tab_num=:num

есть строчка кода в OnCalcFields:
VedTableField5.Value:=VedTableField2.AsInteger+VedTableField3.AsInteger-VedTableField4.AsInteger;

VedTableField2 - Lookup поле возвращает integer
VedTableField3, VedTableField4, VedTableField5 - Calculated поля

мне надо в эту формулу подставить значение, которое возвращает запрос (есстественно у каждого поля он вернет разное значение).
чтобы получилось что-то вроде этого:
VedTableField5.Value:=VedTableField2.AsInteger+VedTableField3.AsInteger-VedTableField4.AsInteger-(ADOQuery.kol.AsInteger*36);

как я не пытался всегда возвращается только первый результат (или вообще ничего smile), т.е. допустим у меня есть три записи в таблице, для каждой из них значение kol будет соответственно 2, 3, 1.
так вот при расчете оно во всех строчках подставляет только первое число 2.

как мне правильно связать запрос с полями?

Автор: Frees 17.12.2008, 10:50
дак ты считай кол-во не отдельным квери а в запросе VedTable подзапросом

Автор: KeyLord 17.12.2008, 12:01
спасибо.
я решил вот так:
изменил запрос на 
SELECT COUNT(*) AS kol, tab_num  FROM childrenid GROUP BY tab_num

а в таблице создал еще одно невидимое lookup поле, звязанное по tab_num
и теперь результат этого запроса существует просто как еще одно поле таблицы, с которым можно спокойно работать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)