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

Вычисляемые поля   Найти похожие ветки 

← →
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 вся ветка

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



Память: 0.47 MB
Время: 0.017 c
15-1184149445
vpbar
2007-07-11 14:24
2007.08.12
Статья 146 УК РФ. Нарушение авторских и смежных прав


4-1172491308
Светлана
2007-02-26 15:01
2007.08.12
работа с портами


15-1184312367
Romkin
2007-07-13 11:39
2007.08.12
Принтер с двухсторонней печатью


11-1167313840
D[u]fa
2006-12-28 16:50
2007.08.12
Memo.Add


2-1184743738
lamerskii_vopros
2007-07-18 11:28
2007.08.12
получение параметров после запроса




   Наверх