Вниз
Скачать: CL | DM;

Как вывести результат суммы по столбцу?   Найти похожие ветки 

 
Axex12   (2002-01-25 04:36) [0]

Уважаемые мастера!
Есть таблица Nakl.
1) Как вывести в Memo1 результат суммы в столбце NaklSum?
Проблема в том, что при OnGetText программа зацикливается.
2) Как остановить событие OnCalcFields?
AutoCalcFields:=False почему-то не работает.
3) Можно ли остановить обработку всех событий?

Вот фрагмент программки:
-----------------------------------------------------
procedure TDMBook.NaklCalcFields(DataSet: TDataSet);
begin
NaklSum.Value:=NaklCount.Value*NaklPrise.Value;
end;

procedure TDMBook.Nakl К КАКОМУ СОБЫТИЮ? (Sender: TField);
var SS:real;
begin
SS:=0;
Nakl.First;
repeat
SS:=SS+NaklSum.Value;
until not Nakl.FindNext;
FormBook.Memo1.Lines.Add(FloatToStr(SS));
end;
-----------------------------------------------------

Не судите строго. Про Delphi услышал только месяц назад.
С уважением, Алексей.


 
Desdechado ©   (2002-01-25 10:37) [1]

не ясно, с какими компонентами доступа к БД работаешь TTable или TQuery
1) для TQuery можно (если без показа данных, просто сумма)
SELECT sum( поле ) FROM таблица WHERE условие
если с показом, то
with( dataset ) do
begin
first;
sum := 0;
while( not EOF ) do
begin
sum := sum + FieldByName( "поле" ).AsFloat;
Next;
end;
end;

событие OnGetText предназначено для хитрого преобразования данных поля при попытке чтения из поля
2) остановить событие нельзя, оно либо случается, либо нет.
AutoCalcFields просто дает указание посчитать, сколько полей в датасете.
OnCalcFields предназначено для обработки вычисляемых полей, т.е. тех, которых нет в БД, но могут быть сформированы на основании имеющихся для отображения. с AutoCalcFields никак не связано
3) обработку событий отменить нельзя. Они все равно будут происходить. Но обработчик события в компоненте можно присвоить nil, тогда он будет пустой, а в нужный момент можно его вернуть назад. Но для начинающего лучше с этим не мудрить - вполне достаточно и стандартного поведения.

САМОЕ ГЛАВНОЕ:
в любом месте дельфей ткни мышой, нажми F1 - и читай, что это такое и для чего оно, тогда не будет таких несуразностей. И почитай книжку о событийных принципах программирования в виндах.



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.007 c
3-57014
Константин
2002-01-23 20:46
2002.02.18
Чтение таблиц Paradox 3.5 в Дельфи...


7-57232
Zevsus
2001-11-13 00:28
2002.02.18
Запускаем процесс, идем его завершения или сворачивания и обрабатываем сие событие..


1-57046
Амелин Вадим
2002-02-04 11:34
2002.02.18
Одновременное нажатие двух кнопок мыши


3-57021
andey
2002-01-18 19:46
2002.02.18
объединение таблиц


7-57234
REL
2001-11-09 11:37
2002.02.18
Логическая задачка (не могу справиться)




   Наверх