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

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

Вычисляемые поля [D6, XP]


L2 ©   (2007-07-16 11:52:00) 

Здравствуйте! Возникла проблема с вычисляемыми полями. Создаю таблицу через DataBaseDesktop. На форме вешаю Query1, Datasourse1, DBGrid.

В обработчик OnCalcFields компонента Query1 вписываю:

Query1Summa_NDS.Value:=Query1Kol_fact.Value*Query1Cena.Value*0.18;
 
при этом все ОК! Поле высчитывается. Но проблема в том, что мне надо что бы высчитывались два поля. Когда пишу так:

Query1Summa_NDS.Value:=Query1Kol_fact.Value*Query1Cena.Value*0.18;
 Query1Summa_All.Value:=Query1Kol_fact.Value*Query1Cena.Value*1.18;

то выбивает ошибку "Buffer Overloff". Можно ли сделать два вычисляемых поля? Если да то как? Буду рад любым советам.


Сергей М.   (2007-07-17 14:06:00) [1]


> а одновременно?


А ты, что способен умудриться сделать это имменно одновременно?

Снимаю шляпу)


StriderMan   (2007-07-17 14:02:00) [2]


> L2   (17.07.07 13:30) [7]

вместо DataSet и dataSetCalcFields подставь соответственно свой компонент запроса и его процедуру-обработчик CalcFields


Desdechado   (2007-07-17 13:38:00) [3]

>  dataSetCalcFields  необъявленный идентификатор
Это метод твоей формы, ответственный за обсчет калькулируемых полей.


L2   (2007-07-17 13:30:00) [4]

DataSet.OnCalcFields := nil;
try
//тут вычисляем поля
finally
DataSet.OnCalcFields := dataSetCalcFields;
end;

ППЦ! Пишет что dataSetCalcFields  необъявленный идентификатор


Johnmen   (2007-07-16 12:52:00) [5]


> StriderMan ©   (16.07.07 12:39) [5]
> ...можно сделать финт ушами:

Дествительно, ушами. Или даже .... :)
Только причем тут вычисляемые поля?


ЮЮ   (2007-07-16 12:39:00) [6]

> Просто при вводе определенного числа в два столбца Kol_fact
> и Cena возникает ошибка

Значит ещё есть обработчики, на котором всё зацикливется, ибо в приведенном коде ничего "страшного" нет. Разве, что .Value может оказаться NULL, на котрой умножать не принято.  

P/S/ Приведи весь код обработчика.


StriderMan   (2007-07-16 12:39:00) [7]


> Не пытаться во время расчета менять поля, от которых зависит
> расчет.

можно сделать финт ушами:

DataSet.OnCalcFields := nil;
try
 //тут вычисляем поля
finally
 DataSet.OnCalcFields := dataSetCalcFields;
end;


L2   (2007-07-16 12:28:00) [8]

> Не пытаться во время расчета менять поля, от которых зависит расчет

Просто при вводе определенного числа в два столбца Kol_fact и Cena возникаетошибка. Раньше создавал вычисляемые столбцы, но вот два одновременно не приходилось.
to Сергей М.
>Можно. Хоть тысячу)

а одновременно?


Desdechado   (2007-07-16 12:10:00) [9]

> Buffer Overloff
Тонкость в том, чтобы не войти в вечную рекурсию. Не пытаться во время расчета менять поля, от которых зависит расчет.


Сергей М.   (2007-07-16 12:02:00) [10]


> выбивает ошибку


Выбивают вообще-то чечетку)
А ошибки - они возникают, а не их "выбивают")


> Можно ли сделать два вычисляемых поля?


Можно. Хоть тысячу)


> Если да то как?


Точно так же как ты создал первое


Наверх

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