Форум: "Базы";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];
Внизкто как считает итоги в DBGrid ? Найти похожие ветки
← →
tchn (2003-11-26 23:30) [0]как подсчитать, к примеру сумму данных в колонке DBGrid? или среднее?
есть много компонентов с агрегатными функциями в гриде, но без исходников, а самому задачу решить чего-то не под силу ((
можно каждый раз пробегаться по DataSet"у этого грида при изменении данных, и считать что надо.
но это, кажется, плохой выход. к тому же некрасиво выглядит этот момент (указатель бегает по гриду, скроллбар скачет...)
подскажите, если кто богат опытом
← →
Michail Dalakov (2003-11-26 23:38) [1]Не хочется бегать по DataSet, возвращай с сервера, а как еще?
Ну если бегать, то можно сделать и без спецэффектов (указатель бегает по гриду, скроллбар скачет...)
← →
mfender (2003-11-26 23:40) [2]Чтобы не скакало и не бегало нужно писать что-то типа DisableControls, я думаю...
Наверное, примерно так же поступают и многие из подразумевающихся компонентов. Рекомендую таки пользоваться TQuery и т.п., и считать соответственно прямо в запросе. Много лет жизни можно сэкономить.
← →
Vemer (2003-11-27 00:37) [3]Хоть и не указан тип БД, но наверно подойдет:
1 раз написать хранимую процедуру с подфункциями и процедуру вызова ее из программы. Типа:
Sklad_Sum.Caption := FloatToStr((Call_Proc(1,0)) - вывод суммы склада;
SellDAY_Sum.Caption := FloatToStr((Call_Proc(2,Date))- вывод суммы продаж за сегодня и т. п.
Где Call_Proc - Процедура задающая нужные параметры для вызова ХП. На одну ХП с 2-4 параметрами можно повесить почти все стандартные расчеты по колонкам (кол-во, сумма, среднее и т.д.)
SQL внутри базы считает очень быстро и без всяких спецэффектов в гриде.
← →
Michail Dalakov (2003-11-27 00:51) [4]Нет универсального решения на все случаи жизни,
если данные в гриде довольно статичны то лучше деиствительно
использовать СУБД. А если открытый Query часто редактируется то дешевле будет правильно организовать все это на клиенте, написав
(или используя) соответствующий компонент, ибо запускать процедуру на сервере при каждом изменении поля, вставке или удалении слишком накладно.
← →
tchn (2003-11-27 02:26) [5]все это хорошо, конечно, запросы на сервере, хранимые процедуры и т.д.
но в том и дело, что пользователь работает с открытым запросом, так что нужно у клиента это дело считать. ввел цифиру в ячейку - итог посчитался...
так что? все-таки бегать?
ладно, бегать - так бегать. а как в таком случае спеэффекты-то убрать? и еще ж нужно указатель на прежнее место вернуть после беготни...
← →
ЮЮ (2003-11-27 04:16) [6]>ввел цифиру в ячейку - итог посчитался
Отнял от суммы то, что было до редактирования и прибавил то, что получилось после, и бегать по всеиу НД не надо (только при открытии). Так. кстати сделано и в DBGridEh
← →
chtr (2003-11-27 07:42) [7]Я бы наверное в еще одном датасете посчитал сумму
← →
mfender (2003-11-27 08:04) [8]
> ЮЮ © (27.11.03 04:16) [6]
> >ввел цифиру в ячейку - итог посчитался
>
> Отнял от суммы то, что было до редактирования и прибавил
> то, что получилось после, и бегать по всеиу НД не надо (только
> при открытии). Так. кстати сделано и в DBGridEh
Умно. Следует прислушаться.
> tchn © (27.11.03 02:26) [5]
> все это хорошо, конечно, запросы на сервере, хранимые процедуры
> и т.д.
> но в том и дело, что пользователь работает с открытым запросом,
> так что нужно у клиента это дело считать. ввел цифиру в
> ячейку - итог посчитался...
> так что? все-таки бегать?
> ладно, бегать - так бегать. а как в таком случае спеэффекты-то
> убрать? и еще ж нужно указатель на прежнее место вернуть
> после беготни...
Не совсем понятно, как в "открытом запросе" можно поменять значение поля, не закрывая его. Или это для того, чтобы только отдельновзятый клиент видел, что там получится, а уж лищь затем UPDATE делал?
Тогда, батенька, следует Вам прислушаться таки к ЮЮ © (27.11.03 04:16) [6], а лучше пользоваться не совсем средствами БД.
← →
mfender (2003-11-27 08:07) [9]Ну а уж "указатель на прежнее место вернуть", думаю особых затруднений не вызовет.
← →
chtr (2003-11-27 08:09) [10]А почему бы в OnPost не запросить сумму по полю из базы?
← →
mfender (2003-11-27 08:27) [11]
> chtr © (27.11.03 08:09) [10]
> А почему бы в OnPost не запросить сумму по полю из базы?
Так ведь опять же запрос...
А надо было:
> но в том и дело, что пользователь работает с открытым запросом,
> так что нужно у клиента это дело считать. ввел цифиру в
> ячейку - итог посчитался...
Что-то Вы мозги тут почтенной публике пудрите.
← →
chtr (2003-11-27 08:53) [12]Прошу прощения за свою невнимательность у публики :)
← →
tchn (2003-11-27 19:15) [13]ага.
вот ЮЮ дело говорит. самое то.
благодарствую
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c