Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.26;
Скачать: CL | DM;

Вниз

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

 
Lina   (2002-09-04 13:41) [0]

Добрый день!

Есть функция вычиления поля:
procedure TMainForm.Query2CalcFields(DataSet: TDataSet);
begin
<выч. поле>.Value:= <выражение>;
end;

Если вызывать ее из любого места программы:
Query2CalcFields (Query2);
получаю исключение т.к. Query2.state = dsBrowse а не dsCalcFields

Как в любом месте программы пересчитать вычисляемое поле ?
Помогите плз.


 
Mike Kouzmine   (2002-09-04 13:46) [1]

Оно пересчитывается автоматически. Не надо явно вызывать. Единственное - св-во CalcFields TQuery должно быть True


 
Lina   (2002-09-04 13:56) [2]

В том-то и дело, что нужно вызвать явно ...


 
Anatoly Podgoretsky ©   (2002-09-04 13:56) [3]

Это не стоит делать, написал(а) обработчик и забудь о нем


 
Mike Kouzmine   (2002-09-04 13:57) [4]

А зачем явно, если это происходит автоматически? Может можно предложить что-то другое?


 
oss ©   (2002-09-04 14:04) [5]

надо явно, сделай отдельную функцию и вызывай ее где надо,
и квери это не датасет, тип другой


 
Lina   (2002-09-04 14:05) [6]

Т.е. никак нельзя явно вызвать обработчик события OnCalcFields
(кроме Query.Next; Query.Prior; Query.Edit и т.п.) ?


 
Mike Kouzmine   (2002-09-04 14:11) [7]

По всей видимости при вызове проверяется state, если он не равен dsCalcFields, то исключение. Если ты сможешь корректно перевести набор в этот state, то - флаг в руки.


 
Дмитрий Калугин   (2002-09-04 16:08) [8]

извне этот обработчик вызывать нельзя, если надо что-то пересчитать, то тут желательно использовать переменную,
а не выражение. (для лучшей производительности)


procedure TMainForm.Query2CalcFields(DataSet: TDataSet);
begin
<выч. поле>.Value:= < переменная>;
end;

Присвоил новое значение и дай Refresh


 
Mike Kouzmine   (2002-09-04 16:22) [9]

Дмитрий Калугин -> А если в вычислении этой переменной учавствуют поля текущей таблицы, то как? Очень спорный совет, мне кажется


 
Дмитрий Калугин   (2002-09-04 17:05) [10]

>Mike Kouzmine
А зачем тогда ее вызывать извне вообще?



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.168 c
1-85475
VaS
2002-09-16 13:59
2002.09.26
IDL, size_is()


3-85337
LUK_Paul
2002-09-04 14:53
2002.09.26
Отрицательные значения в ADO


14-85686
Игорь Шевченко
2002-08-28 12:23
2002.09.26
Встреча мастаков в Москве


1-85486
sachem
2002-09-16 18:51
2002.09.26
как сделать, что бы событие формы KeyPress действовало везде


3-85408
SONY
2002-09-03 14:40
2002.09.26
SUM(TIMEFIELD)