Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-62060
surkis
2003-12-05 16:09
2003.12.19
Explorer


1-62085
Riptor
2003-12-08 11:49
2003.12.19
Тестирование с помощью пакета qtest


1-62011
Piero
2003-12-06 18:14
2003.12.19
Масштабирование TImage


1-61999
selena
2003-12-05 13:13
2003.12.19
Смена кодировки


6-62178
BAPBAP
2003-10-22 17:56
2003.12.19
TIdTCPClient и TIdTCPServer на одном порту.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский