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