![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическое получение суммы по полю. [D6]
LordBTR © (2003-10-27 16:33:00)
Вносим записи в Query (CachedUpdates:=True) в поле sumv.
И как в этой ситуации просуммировать поле, если измененния еще не ApplyUpdates?
LordBTR (2003-10-28 16:42:00) [1]
> Danilka [9]
Предложи лучше третий способ самый красивый. :))
Danilka (2003-10-27 17:29:00) [2]
[8] LordBTR (27.10.03 17:28)
второй лучше :))
LordBTR (2003-10-27 17:28:00) [3]
> Sandman25
Ok. Принимаем способ первый. Спасибо.
Sandman25 (2003-10-27 17:23:00) [4]
[6] LordBTR (27.10.03 17:19)
"Покрасивше" будет вторым способом из [2] Sandman25 © (27.10.03 16:38)
Только мороки больше.
LordBTR (2003-10-27 17:19:00) [5]
> Sandman25
> Посчитать с помощью First while not Eof do Next в том же
> Dataset, который проводит изменения.
Да. Спасибо. Так получилось. Но все же может можно как-нибудь иначе (покрасивше), а то эта беготня Next по массиву...
LordBTR (2003-10-27 16:59:00) [6]
> Sandman25
Ну вобщем-то я и предполагал, что так придется делать, но надеялся, что есть способ лучше. Я уж и ClientDataSet с аггрегатным полем пытался прикрутить, но он тоже только после ApplyUpdates сумму обновляет. :(
Sandman25 (2003-10-27 16:50:00) [7]
>Тут чего то не пойму. Как пробежаться и посчитать? До ApplyUpdates новый запрос измененний не увидит. :(
Посчитать с помощью First while not Eof do Next в том же Dataset, который проводит изменения.
>Т.е. AfterInsert sumv=sumv+QuerySUMV.Value;
AfterDelete sumv=sumv-QuerySUMV.Value;
Да, примерно так. Только надо еще и на изменение реаигировать, если у Вас есть такая операция с данными.
LordBTR (2003-10-27 16:46:00) [8]
> Danilka
В том и смысл: "эпплаить их или нет?"
> Sandman25
> либо при необходимости вывести сумму быстренько пробежаться по > dataset и посчитать ее
Тут чего то не пойму. Как пробежаться и посчитать? До ApplyUpdates новый запрос измененний не увидит. :(
> при открытии dataset посчитать сумму (либо отдельным запросом
Это делаю.
> а затем при изменении данных отслеживать изменение суммы.
Т.е. AfterInsert sumv=sumv+QuerySUMV.Value;
AfterDelete sumv=sumv-QuerySUMV.Value;
Sandman25 (2003-10-27 16:38:00) [9]
Два способа: либо при необходимости вывести сумму быстренько пробежаться по dataset и посчитать ее либо при при открытии dataset посчитать сумму (либо отдельным запросом, либо пробежавшись как в первом способе), а затем при изменении данных отслеживать изменение суммы.
Danilka (2003-10-27 16:34:00) [10]
а какой смысл, если они не ApplyUpdates?