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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.01.2016, 16:22   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Нужно получить сумму значений столбца в БД

Есть таблица, в ней есть столбец Price, мне необходимо в Label записать сумму всех значений в столбце.

Делаю подсчет следующим образом:

Код:
    DataModule1.FDQuery1.First;
    for I := 0 to DataModule1.FDQuery1.RecordCount-1 do
         begin
            Total:=total+DataModule1.FDQuery1.FieldByName('Price').AsInteger;
            DataModule1.FDQuery1.Next; 
         end;
    Label1.Caption:=total;
Вопрос: Есть ли более рациональные способы чтобы не надо было перебирать визуально всю таблицу?
Dux вне форума
Старый 30.01.2016, 16:26   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Dux Посмотреть сообщение
Вопрос: Есть ли более рациональные способы чтобы не надо было перебирать визуально всю таблицу?
В SQL для подобных целей есть стандартная функция SUM.
Streletz вне форума
Старый 30.01.2016, 16:42   #3
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
В SQL для подобных целей есть стандартная функция SUM.
Спасибо, пробую так:

Код:
DataModule1.FDQuery1.Close;
DataModule1.FDQuery1.SQL.add('SELECT sum(Price) FROM data');
DataModule1.FDQuery1.Open;
Но что-то ошибку выдает
Dux вне форума
Старый 30.01.2016, 16:55   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

а чего add, а не просто в text запрос засунуть? Там же уже был запрос до этого?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 30.01.2016, 17:30   #5
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
а чего add, а не просто в text запрос засунуть? Там же уже был запрос до этого?
В смысле просто в текст?
Dux вне форума
Старый 30.01.2016, 18:32   #6
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от Dux Посмотреть сообщение
В смысле просто в текст?
Код:
DataModule1.FDQuery1.SQL.text:='SELECT sum(Price) FROM data'
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума
Старый 31.01.2016, 01:44   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Dux Посмотреть сообщение
Спасибо, пробую так:

Код:
DataModule1.FDQuery1.Close;
DataModule1.FDQuery1.SQL.add('SELECT sum(Price) FROM data');
DataModule1.FDQuery1.Open;
Но что-то ошибку выдает
ошибку .! если DataModule1.FDQuery1 изначально выбирает все полей и потом делаем из этого DataModule1.FDQuery1 "Агрегатные функции" конечно будет ошибка , Я на пример это SELECT sum(Price) делал из другой FDQuery1 или ADOQuery не важно на данный момент
Код:
procedure TForm1.btnSummClick(Sender: TObject);
begin
  with qrySUMM do
  begin
    SQL.Clear ;
    SQL.Append('SELECT SUM(price) FROM printer ');
    Open;
    pnlSumm.Caption := qrySUMM.Fields[0].AsString +' . '+ 'Руб';
  end;
end;
Вложения
Тип файла: rar Adoquery_Sum.part01.rar (500.0 Кб, 11 просмотров)
Тип файла: rar Adoquery_Sum.part02.rar (500.0 Кб, 11 просмотров)
Тип файла: rar Adoquery_Sum.part03.rar (500.0 Кб, 8 просмотров)
Тип файла: rar Adoquery_Sum.part04.rar (500.0 Кб, 9 просмотров)
Тип файла: rar Adoquery_Sum.part05.rar (500.0 Кб, 9 просмотров)
Тип файла: rar Adoquery_Sum.part06.rar (402.0 Кб, 7 просмотров)
xxbesoxx вне форума
Старый 31.01.2016, 01:52   #8
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
Код:
DataModule1.FDQuery1.SQL.text:='SELECT sum(Price) FROM data'
Dvoishnik не кто не спрашивал как написать FDQuery1.SQL.text:=
xxbesoxx вне форума
Старый 31.01.2016, 02:01   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Dux Посмотреть сообщение
В смысле просто в текст?
Вот здесь правильно "Аватар"
Цитата:
Аватар Там же уже был запрос до этого?
и за этого было чудесный ошибка )))
xxbesoxx вне форума
Старый 31.01.2016, 02:37   #10
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Dvoishnik не кто не спрашивал как написать FDQuery1.SQL.text:=
а что он тогда спрашивал??

и этот код решает проблему не хуже. не нужен никакой clear.
ИМХО для маленьких запросов sql.text гораздо удобнее чем SQL.Add(); или Append();
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение столбца "За сутки" из массива значений соответсвующих определенной дате Pavel1980 Microsoft Office Excel 8 16.11.2014 20:25
Как посчитать сумму столбца Dbgrid? вася радугов Помощь студентам 10 23.05.2014 00:39
Передача значений столбца kwint3r БД в Delphi 9 11.03.2012 18:33
наибольшая сумму элементов столбца Delphi warma2d Помощь студентам 3 21.11.2010 00:15
Сумма значений столбца Grom48 БД в Delphi 4 28.12.2009 21:39