Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.12;
Скачать: 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 вся ветка

Текущий архив: 2007.08.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
2-1184090570
Евгений Р.
2007-07-10 22:02
2007.08.12
Перемещение по DrawGrid


2-1184660136
Sergey_G
2007-07-17 12:15
2007.08.12
Подключение сетевой базы данных


2-1184691358
Strange man
2007-07-17 20:55
2007.08.12
Скорость работы с объектами в Delphi


15-1182677885
tesseract
2007-06-24 13:38
2007.08.12
ММП - пора наконец!


6-1167880831
LFRT
2007-01-04 06:20
2007.08.12
Как с помощью сокетов получить от сервера имя файла