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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 22:23   #1
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию Как посчитать сумму столбца Dbgrid?

Нашел на форуме код, который считает сумму столбца Dbgrid. Вот он:
Код:
s:=0;

i:=AdoTable.RecNo;

AdoTable.DisableControls;

AdoTable.First;

while not(AdoTable.Eof) do

  begin

    S:=S+AdoTable.FieldByName('..').AsFloat;

    AdoTable.Next;

  end;

AdoTable.RecNo:=i;

AdoTable.EnableControls;

Label.Caption:=FloatToStr(s);
только здесь сумма выводится в Label, а как вывести сумму в столбец Dbgrid?
Я пытаюсь вместо строки
Код:
Label.Caption:=FloatToStr(s);
Написать так
Код:
 rach.FieldByName('d').Value:=IntToStr(s);
но это неправильно. Подскажите как можно сделать по-другому.
вася радугов вне форума Ответить с цитированием
Старый 22.05.2014, 22:33   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вообще-то такие вычисления делаются с помошью вычисляемых полей
http://www.delphiplus.org/programiro...ted-polya.html
http://www.helloworld.ru/texts/comp/...phi1/les38.htm
http://devdelphi.ru/?p=1229
(Ну или запросом)
А то что ты хочешь сделать это не совсем правильно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2014, 22:35   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

DBGridEh просто это делает, ну в общем для ленивых
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.05.2014, 23:01   #4
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

Спасибо за ссылки. Исправил код вот так
Код:
procedure TForm11.rachCalcFields(DataSet: TDataSet);
 var
s:integer;
begin
 s:=0;
 with rach do begin
rach.DisableControls;
repeat
  S:=S+rach.FieldByName('SUMMA2').AsInteger;
rach.next;
 until eof;
 rach.First;
 rach.EnableControls;
 end;
 rach.FieldByName('d').Value:=s;
end;
при запуске появляется ошибка Stack overflow. Как ее исправить?

Цитата:
Сообщение от Аватар Посмотреть сообщение
DBGridEh просто это делает, ну в общем для ленивых
У меня нет этого компонента. Может ошибаюсь, но кажется его надо устанавливать.

Последний раз редактировалось Stilet; 22.05.2014 в 23:13.
вася радугов вне форума Ответить с цитированием
Старый 22.05.2014, 23:14   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Исправил код вот так
Все равно это непрофессионально. А точнее такой обход чреват пичальными последствиями.
Цитата:
Может ошибаюсь, но кажется его надо устанавливать.
Не ошибся. Но если хочется сразу и быстро - оно того стоит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2014, 23:17   #6
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

Если честно, я не знаю, как сделать по-другому. Может подскажите, если вам нетрудно.
вася радугов вне форума Ответить с цитированием
Старый 22.05.2014, 23:23   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нетрудно. Поэтому выше и выложил ссылки. Все вычисляемые поля не должны записываться в базу - это ее загрязняет лишними данными. Более того есть случаи когда такая запись весьма опасна для аналитических расчетов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2014, 23:55   #8
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

Мне надо посчитать не просто сумму столбца, а получить итог столбца Summa, где Summa - это Calculated поле. Может поэтому у меня не получается посчитать или это не играет никакой роли?
вася радугов вне форума Ответить с цитированием
Старый 23.05.2014, 00:12   #9
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Summa - это Calculated поле
Зачем?
Можно создать запрос, который считает итоги и, на худой конец, присоединить его через union к основному запросу.
Хотя, что мешает скачать и установить EhLib. Версия 3.6 бесплатная.
Streletz вне форума Ответить с цитированием
Старый 23.05.2014, 00:29   #10
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Зачем?
я имел ввиду, что у меня есть таблица, в ней поля цена и количество, а в поле Summa (вычисляемое) соответственно считается сумма: цена*количество автоматически. А я хочу посчитать итоговую сумму, то есть сложить все поля Summa
вася радугов вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как посчитать сумму за опреденный месяц Jaroslav Microsoft Office Excel 1 26.04.2014 23:18
Как посчитать сумму в ленточной форме?( noobbb Microsoft Office Access 0 21.05.2012 19:29
Как посчитать сумму на php voloxa89 PHP 5 31.08.2011 12:25
Как посчитать значение столбца значениями из разных таблиц? Plohoy91 БД в Delphi 3 28.12.2010 22:05
Как посчитать сумму в столбце таблицы? Иллидан Microsoft Office Word 1 15.04.2008 21:30