Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

DBGrid   Найти похожие ветки 

 
mr1Andersen   (2006-06-07 19:54) [0]

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


 
Iehbr ©   (2006-06-07 20:12) [1]

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


 
Iehbr ©   (2006-06-07 20:15) [2]

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

...

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


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

На сколько я понял, надо на форму вставить компонент (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), но я в перечне ни нашел своих таблиц.
Может еще что надо?


 
Desdechado ©   (2006-06-07 21:22) [4]

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

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


 
Desdechado ©   (2006-06-07 21:28) [5]

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


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

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


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


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

Всем спасибо, проблема решена.
Просто надо на форму поместить 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;
Вот и все.


 
Desdechado ©   (2006-06-07 22:05) [8]

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


 
Amoeba ©   (2006-06-08 11:40) [9]

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

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

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


 
ЮЮ ©   (2006-06-08 11:43) [10]

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

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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
6-1139987331
Anton :-))
2006-02-15 10:08
2006.06.25
POP3 изменение subject входящего сообщения


9-1131538867
VolanD666
2005-11-09 15:21
2006.06.25
Количество теругольников в D3D.


15-1149128005
Arazel
2006-06-01 06:13
2006.06.25
Народ! подскажите где взять документацю ф.с. Ex2/Ex3/NTFS/...


11-1129621644
Боб
2005-10-18 11:47
2006.06.25
KOLECMLISTEDIT ошибки при компиляции


15-1149154067
Александр Б.
2006-06-01 13:27
2006.06.25
Шаблоны