Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
ВнизВычисляемые поля Найти похожие ветки
← →
L2 (2007-07-16 11:52) [0]Здравствуйте! Возникла проблема с вычисляемыми полями. Создаю таблицу через 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-16 12:02) [1]
> выбивает ошибку
Выбивают вообще-то чечетку)
А ошибки - они возникают, а не их "выбивают")
> Можно ли сделать два вычисляемых поля?
Можно. Хоть тысячу)
> Если да то как?
Точно так же как ты создал первое
← →
Desdechado © (2007-07-16 12:10) [2]> Buffer Overloff
Тонкость в том, чтобы не войти в вечную рекурсию. Не пытаться во время расчета менять поля, от которых зависит расчет.
← →
L2 (2007-07-16 12:28) [3]> Не пытаться во время расчета менять поля, от которых зависит расчет
Просто при вводе определенного числа в два столбца Kol_fact и Cena возникает ошибка. Раньше создавал вычисляемые столбцы, но вот два одновременно не приходилось.
to Сергей М.
>Можно. Хоть тысячу)
а одновременно?
← →
ЮЮ © (2007-07-16 12:39) [4]> Просто при вводе определенного числа в два столбца Kol_fact
> и Cena возникает ошибка
Значит ещё есть обработчики, на котором всё зацикливется, ибо в приведенном коде ничего "страшного" нет. Разве, что .Value может оказаться NULL, на котрой умножать не принято.
P/S/ Приведи весь код обработчика.
← →
StriderMan © (2007-07-16 12:39) [5]
> Не пытаться во время расчета менять поля, от которых зависит
> расчет.
можно сделать финт ушами:DataSet.OnCalcFields := nil;
try
//тут вычисляем поля
finally
DataSet.OnCalcFields := dataSetCalcFields;
end;
← →
Johnmen © (2007-07-16 12:52) [6]
> StriderMan © (16.07.07 12:39) [5]
> ...можно сделать финт ушами:
Дествительно, ушами. Или даже .... :)
Только причем тут вычисляемые поля?
← →
L2 (2007-07-17 13:30) [7]
DataSet.OnCalcFields := nil;
try
//тут вычисляем поля
finally
DataSet.OnCalcFields := dataSetCalcFields;
end;
ППЦ! Пишет что dataSetCalcFields необъявленный идентификатор
← →
Desdechado © (2007-07-17 13:38) [8]> dataSetCalcFields необъявленный идентификатор
Это метод твоей формы, ответственный за обсчет калькулируемых полей.
← →
StriderMan © (2007-07-17 14:02) [9]
> L2 (17.07.07 13:30) [7]
вместо DataSet и dataSetCalcFields подставь соответственно свой компонент запроса и его процедуру-обработчик CalcFields
← →
Сергей М. © (2007-07-17 14:06) [10]
> а одновременно?
А ты, что способен умудриться сделать это имменно одновременно ?
Снимаю шляпу)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.055 c