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

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

Как сделать так,CalcFields считались сразу для всех записей Query [D6, D7, dBase, FoxPro, Paradox]


Al11 ©   (2003-03-11 13:37:00) 

При открытии формы с DBGrid-ом, связанным с Query, у которого есть
вычисляемые поля, переменнная С(в OnCalcFields: C:= C+1) равна количеству
отображенных в DBGrid-е (видимых (помещающихся) на экране) записей Query.
Как сделать так, чтобы эта переменная была равна общему количеству записей Query.
(т.е. CalcFieldsсчитались сразу для всех записей Query)


Соловьев   (2003-03-11 15:27:00) [1]

with Query do
begin
Sum := 0;
First;
while not Eof do
begin
Sum := Sum + FieldByName("CalcField").AsIneteger;
Next;
end;
end;


Соловьев   (2003-03-11 15:21:00) [2]

select sum(field)
from table


Johnmen   (2003-03-11 15:18:00) [3]

Так делать в принципеневерно !
Если нужна сумма, то просто пробежаться по всему НД и просуммировать...


Al11   (2003-03-11 15:13:00) [4]


Al11   (2003-03-11 15:04:00) [5]

Извините! Не то хотел спросить...
Нужно подсчитать сумму значении вычисляемомго поля (например FieldCalc у Query),
записи содержащие данное поле предварительно фильтруются. я сделал это так:

procedure...
...
Sum:=0;
Query.filtred:=true;
...
end;

В OnFiltredRecord у Query записи Фильтруются по условию и
у записей удовлетворяющих фильтру генерируется OnCalcFields, где
есть такой фрагмент Sum:=Sum+QueryFieldCalc.Valu
Но все дело в том, что Sum считается только
для тех записей удовлетворяющих фильтру, которые отображены в
DBGrid-е (связанной с Query)


Johnmen   (2003-03-11 13:42:00) [6]

Зачем же это делать в OnCalcFields ?!!!
Возможно, подойдет RecordCount...


Наверх

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