Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2009, 17:04   #1
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию сумма ячеек столбца-?

В столбце А DBGrid содержатся цифры. Нужно чтобы например в label1 отображалась сумма всех цифр столбца. В данном случае, как на рисунке, сумма будет равна 17. Как это сделать, и в каком событии?
Изображения
Тип файла: jpg A.jpg (16.8 Кб, 72 просмотров)
Evgenii вне форума Ответить с цитированием
Старый 23.11.2009, 17:09   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

В цикле просуммировать значения данного поля по всем записям НЕ ДБГРИДА, А ДАТАСЕТА (ТАБЛИЦЫ), откуда дбгрид берет данные.
Код:
Table.First;
while not Table.Eof do
begin
...//тут добавляем к сумме значение из очередной записи
Table.Next;
end;
mihali4 вне форума Ответить с цитированием
Старый 23.11.2009, 17:10   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Ну можно извратиться и посчитать сумму в OnCalcFields, создав дополнительное вычисляемое поле...
Но я лично предпочел бы запросик написать на SQL для суммирования
Select sum(поле); - он вернет всего одну запись с одним полем тогда
Query.Field[0].AsFloat нацеленный на этот запрос даст нужный результат.

От mihali4
Дружище, тогда придется объяснять, что такое SQL, как составить запрос, как получить оттуда сумму и т.д.
I'm learning to live...

Последний раз редактировалось mihali4; 23.11.2009 в 17:15.
Stilet вне форума Ответить с цитированием
Старый 23.11.2009, 17:19   #4
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

Тут вопрос скорей, где бы лучше код написать, чтобы цикл не пробегал все время по таблице. Если в OnFormShow, это будет не заметно, но зато данные не будут обновляться при каждом изменении. А нужно чтобы сумма изменялась. Вот можно это как-то сделать без пробега цикла по таблице?
Evgenii вне форума Ответить с цитированием
Старый 23.11.2009, 17:38   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А при чем тут OnFormShow???
Достаточно один обработчик с этим циклом назначить на события Table.AfterOpen и Table.AfterPost...
mihali4 вне форума Ответить с цитированием
Старый 23.11.2009, 18:05   #6
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

это то верно, но когда дело доходит до Table.AfterPost, цикл пробегает по всей таблице!! и каждый раз это не очень то удобно. Нужно чтобы цикл работал незаметно. Это можно сделать?
Evgenii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сумма ячеек pirat:) Microsoft Office Excel 6 25.12.2008 05:31
В прямоугольной матрице переставить столбцы так, чтобы сумма элементов столбца росла от первого столбца Aleo13 Помощь студентам 5 15.10.2008 18:34
Сумма ячеек artemavd Общие вопросы Delphi 11 24.07.2008 16:36
сумма столбца zetrix БД в Delphi 1 01.11.2006 15:42