Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Вниз

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


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 - и читай, что это такое и для чего оно, тогда не будет таких несуразностей. И почитай книжку о событийных принципах программирования в виндах.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.029 c
1-57076           DenK_vrtz             2002-02-01 13:33  2002.02.18  
Вопросик про Create формы


1-57108           M@XIDROM              2002-02-01 15:32  2002.02.18  
Создание компонент


1-57085           HDD                   2002-02-02 01:20  2002.02.18  
Как мне применить следующий код к RichEdit1?


3-57024           Андре                 2002-01-24 09:41  2002.02.18  
Отладка хранимых процедур.


1-57083           Hecker                2002-02-01 02:59  2002.02.18  
Может кто-нить сталкивался с такой проблемой?