Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вычисляемые поля ... [D6, Paradox]


Lina ©   (2002-09-04 13:41:00) 

Добрый день!

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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


oss   (2002-09-04 14:04:00) [6]

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


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

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


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

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


Anatoly Podgoretsky   (2002-09-04 13:56:00) [9]

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо