![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать так,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...