IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> сумма ячеек столбца-?
1147
сообщение 23.11.2009 18:25
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


В столбце А DBGrid содержатся цифры. Нужно чтобы например в label1 отображалась сумма всех цифр столбца. В данном случае, как на рисунке, сумма будет равна 17. Как сделать чтобы цикл не пробегал по таблице при каждом изменении суммы, и в каком событии?
procedure TForm5.AdoTable1AfterPost(DataSet: TDataSet);
var sum:integer;
begin
AdoTable1.First;
sum:=0;
while not AdoTable1.EOF do
begin
AdoTable1:=sum+AdoTable1.FieldByName('txt').AsInteger;
AdoTable1.Next;
label1.Caption:=inttostr(sum);
end;
end;

Может быть можно использовать вычисляемое поле DBGrid?

Сообщение отредактировано: 1147 - 23.11.2009 18:26


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 23.11.2009 19:08
Сообщение #2


Гость






Нет, вот здесь тебе Calculated Field точно не поможет. Потому что тебе надо находить сумму в столбце, а не выполнять какие-то действия в строке Грида. Лучший вариант - это использовать Access-овские возможности через TQuery (использовать тот же Sum), или так, как ты делаешь (это - худший вариант).

AdoQuery можно задействовать вот так, например:
  with ADOQuerySum do
begin

SQL.Clear;
SQL.Text := 'SELECT Sum(Table1.A) AS [SumOfA] FROM Table1;';
Open;

Label1.Caption := FieldByName('SumOfA').AsString;
end;
Тогда Access будет делать сам то, что сейчас делаешь ты.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 8.07.2025 16:57
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"