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


Автор: Mr.Picwick 6.11.2004, 21:37
Привет всем, такая вот типичная проблема решив которую, надеюсь облегчить жизнь не только себе , но и всем прочитавшим
данную тему.

У меня приложение БД. Ado+Access. Есть в одной таблице вычисляемые поля (calculated fields), а мне требуется
найти сумму значений вычисляемого поля(т.е. по всем строкам), но возникают ошибки.С помощью SQL этого не сделаешь т.к.
поле не в физической таблице, а в НД, т.е. в Table.
Вообще с таким видом полей постоянные проблемы: например когда я использую RxDBGrid, там я делаю сортировку по столбцам
нажатием на заголовок столбца А когда нажимаешь на столбец вычисляемого поля , то ничего не сортируется.
Подскажите, есть ли какие стандартные приемы обхода этой фигни

Автор: Pakshin A. S. 7.11.2004, 12:04
пройтись в цикле и получить сумму...
Код

Table1.First;
s:=0;
while not Table1.Eof do
begin
 inc(s, table1.Fields[FieldNo].AsInteger);
 Table1.Next;
end;

Автор: Mr.Picwick 7.11.2004, 17:34
Мне нужно чтобы при любом изменении данных эта сумма менялась - ну
вроде как в Excel формула суммы. я попробовал написать вычисление суммы в обработчике OnCalcFields - выдает ошибки, я попробовал сделать аггрегатное поле - тоже ни фига не получилось.

Автор: Pakshin A. S. 7.11.2004, 20:50
Как только произошли изменения в наборе данных, то сразу же производи повторный рассчет...

Автор: Mr.Picwick 8.11.2004, 08:47
Я так и сделал. Написал подобную процедуру которая вычисляет сумму, но
вот в чем проблема, процедура эта "проходит по всем записям таблицы", пока записей не так много, но потом я думаю будет медленно работать.
Я вот думаю изменить процедуру эту, и в ней запоминать промежуточные
значения суммы, а по событиям OnChange, или OnRefresh, или AfterPost изменять значение суммы.

Автор: Guest 8.11.2004, 13:31
ползоватся TQuery и вычисления делать в запросе. или делать View.

Автор: Mr.Picwick 11.11.2004, 00:19
Guest можно поподробнее как в Делфях работать с вьюхами?
Я делаю так:
Код

Create View MyView (id,fio,salary,calc) as
Select id,fio,salary,salary*percent
From Emp

Но при выполнении выдает ошибку: в секции Parameters ошибка синтаксиса smile

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