powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ehlib, DbGridEh.SumList.ExternalRecalc
13 сообщений из 13, страница 1 из 1
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32311347
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажем у меня 100 записей, надо посчитать сумму и вывести в футере. Ehlib это делает долго. Поэтому для этих целей есть ExternalRecalc. Порядок работы с ним такой:
1. Я считаю сумме на SQL, подставляю значение в футере.
2. Затем, если значение какой-либо записи меняется, то сумма в футере тоже меняется, но уже быстро. Он не делает полный персчет.

Но у меня проблема в пункте один, я не могу подставить значение в футер почему то. Выводятся одни нулю.
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32311385
Papka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValueType какой?
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32311393
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fvtSum
Это нужно для того, что бы потом сумма пересчитывалась. Т.е. работал пункт 2.
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32311418
MrAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какие свойства установлены для TSumList?
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32311469
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
GridEh.SumList.Active:=True;
GridEh.SumList.ExternalRecalc:=True;
GridEh.Columns[ 0 ].Footer.ValueType:=fvtSum;


Я не знаю передать значения в SumList от внешнего расчета суммы.
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32311571
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем я разобрался, вот так надо
Код: plaintext
GridEh.SumList.SumCollection[ 0 ].SumValue:=...


Вообщем слово в Интернете ExternalRecalc вообще не встречатеся. Странно, что никто раньше не пользовался ExternalRecalc. Или не у кого вопросов не возникало?:)
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32311718
MrAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще подбитие итогов в EhGrid происходит несколько кривовато.
Я не использовал ExternalRecalc, вызывал свою функцию, которая подбивала
итоги, при этом работала моментально на любом наборе данных и без
использования дополнительных запросов.

Кстати, есть у этого подбития итогов еще куча нюансов, которые надо
учитывать. :)
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32311829
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrAlex писал: вызывал свою функцию, которая подбивала
итоги, при этом работала моментально на любом наборе данных и без
использования дополнительных запросов.


Поделись, как в Delphi быстро посчитать сумму 100 записей типа Currency.
Думаю бежать по Dataset'у будет долго.
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32313284
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Up
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32317965
MrAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини за долгий ответ.

Принцип примерно таков.
На OnBeforeEdit (это когда допустим значения корректируются в Гриде
либо перед запуском процедурины, которая меняет значения этих полей),
вешается процедурина каторая сохраняет значения всех нужных полей,
а также итогов по ним.
После проведения корректировки, например на OnAfterPost (либо
после отработки иной процедуры), сравниваются текущие значения с
предыдущими (по столбцам) и дальше на эти разницы
(опять таки по столбцам) корректируются значения в SumList.
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32317966
MrAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно немного замучено, зато работает намного быстрее и нет
постоянных пробегов по DataSet, которые так не любит EhGrid
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32318577
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так если включить SumList.ExternalRecalc то EhGrid так и делает. Проблема у меня была посчтить быстро первый раз. Я ее решил след. образом:
1. ADODataSet.records.getrows. Достает массив. В массиве посчитать сумму гораздо быстрее. ПРоблема в том, что в этот массив не попадают поля типа calculated и lookup.
2. Сделать запрос на SQL. Т.е. при открытии набора считаю сумму где надо. А при изменении этим уже занимается EhGrid, по принципу, как ты описал. Глюков пока не заметил.
...
Рейтинг: 0 / 0
Ehlib, DbGridEh.SumList.ExternalRecalc
    #32319369
MrAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе у меня работает также... Вначале работы идет подбитие суммы, а
уже дальше по изменению...
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ehlib, DbGridEh.SumList.ExternalRecalc
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]