Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DBGrid [D5, XP]


mr1Andersen ©   (2006-06-07 19:54:00) 

Так как это форум для начинающих программистов, я позволю себе спросить, как в таблице DBGrid1 суммировать конкретный столбик чисел?
Очень рад буду примеру программного кода.
Спасибо.


Amoeba   (2006-06-08 11:57:00) [1]


> ЮЮ ©   (08.06.06 11:43) [10]
> >DBGridEh из EhLib умеет это делать сам
>
> точно так же просканировав весь набор данных :)

Естественно, таким способом, но при этом не надо всякий раз писать самому код.


ЮЮ   (2006-06-08 11:43:00) [2]

>DBGridEh из EhLib умеет это делать сам

точно так же просканировав весь набор данных :)


Amoeba   (2006-06-08 11:40:00) [3]

DBGridEh из EhLib умеет это делать сам выводя резутьтат в специальной строке у нижнего края сетки.

Скачать EhLib 3.6 можно здесь
http://www.ehlib.com/RUS/ehlibrus.exe

Пароль: ФЕВРАЛЬФЕВРАЛЬ


Desdechado   (2006-06-07 22:05:00) [4]

если тебе не нравится мерцание грида, вспомни про disablecontrols;


mr1Andersen   (2006-06-07 22:02:00) [5]

Всем спасибо, проблема решена.
Просто надо на форму поместить Button1 и Label1; затем присвоить Button1 такой программный код:
procedure TForm1.Button1Click(Sender: TObject);
var
 m:integer;
begin
 m:=0;
 table1.First;
 while not table1.Eof do
 begin
   m:=m+(table1.Fields[3].AsInteger); {потому что 3-й столбик
                                                   надо суммировать}
   table1.Next;
 end;
 label1.Caption:=IntToStr(m);
end;
Вот и все.


Virgo_Style   (2006-06-07 21:34:00) [6]

mr1Andersen   (07.06.06 21:15) [3]
2-затем (Object Inspector / Properties / SQL)
 записать: Append('SELECT Sum(Baza.Cena) AS Itogo FROM Baza');


Т-т-ты Append в свойстве SQL пишешь???


Desdechado   (2006-06-07 21:28:00) [7]

в [1] - это в коде, а не в инспекторе
если хчешь пользовать SQL, то его надо учить, а не копировать бездумно


Desdechado   (2006-06-07 21:22:00) [8]

можно пройтись по датасету и просуммировать вручную
x:=0;
with(qry) do begin
disablecontrols;
first;
while(not eof) do begin
x:=x+Fileds[0].AsFloat;
next;
end;
end;

некоторые датасеты умеют сами суммировать


mr1Andersen   (2006-06-07 21:15:00) [9]

На сколько я понял, надо на форму вставить компонент (TQuery);
1-затем в (Object Inspector / Properties / Active) поставить false;
2-затем (Object Inspector / Properties / SQL)
  записать: Append('SELECT Sum(Baza.Cena) AS Itogo FROM Baza');
3-потом (Object Inspector / Properties / Active) поставить True. Оно мне выдает ошибку:
 Invalid use of keyword.
 Token: Append(‘SELECT
 Line Number: 1
Я предполагаю что это могло бы бить через то что я не подключил (Object Inspector / Properties / DatabaseName), но я в перечне ни нашел своих таблиц.
Может еще что надо?


Iehbr   (2006-06-07 20:15:00) [10]

Sorry
..SELECT Sum(Baza.Cena) AS Itogo FROM Baza');

...

Ну и наконец
ShowMessage('ИТОГО = '+TQuery.FieldByName['Itogo'].AsString);


Iehbr   (2006-06-07 20:12:00) [11]

DBGrid тут ни причем, он предназначен в основномдля отображения данных.
Суммировать можно например используя запрос в TQuery
TQuery.Active := False;
TQuery.SQL.Clear;
TQuery.SQL.Append('SELECT Sum(Baza.Cena) FROM Baza');
TQuery.Active := True;


Наверх

Титульная страница Поиск, карта сайта Написать письмо