Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

TTable очередность событий

442
10 ноября 2002 года
HexoGenus
121 / / 20.03.2000
Привет Всем :D
Проблема:
Нужно при фильтрации БД проверить значения вычисляемых полей но их значения в момент фильтрации оказываются неопределенными...
Проведя маленькое расследование выяснил что при переборе значений в БД сначала срабатывает
OnFilterRecord
а уже потом
OnCalcFields
в результате вычислимое поле на момент фильтрации еще не рассчитано :(
Попробовал из OnFilterRecord вызывать
DataSet->OnCalcFields(DataSet) ;
тут ТАКОЕ началось :D (судя по всему в момент фильтрации для вычислимых полей еще не выделена память :x )

Вобщем вопрос:
Можно ли изменить очередность событий ?
Я так понимаю что OnFilterRecord разработчики поставили первой для того что бы зря не рассчитывались вычислимые поля для записей которые не будут отображаться... (но может они оставили какой либо механизм смены очередности событий?)
Можно ли вмешаться в механизм выделения памяти под вычислимые поля? (Может после принудительного выделения памяти, можно будет вызвать OnCalcFields из OnFilterRecord ?)

Заранее благодарен :D
2.0K
10 ноября 2002 года
D. Lex
45 / / 09.10.2002
Цитата:
Originally posted by HexoGenus

Вобщем вопрос:
Можно ли изменить очередность событий ?



Я так понимаю, речь идет о BDE? Нет, их очередность никак нельзя изменить, т.к. OnCalcFields вызывается методами TDataSet, а OnFilterRecord используется его наследником, TBDEDataSet, который вешает callback на BDE (см. метод RecordFilter), из которого уже вызывается OnFilterRecord. Естественно, "из OnFilterRecord вызывать DataSet->OnCalcFields(DataSet)" ни к чему хорошему не приведет. :))

Цитата:

Я так понимаю что OnFilterRecord разработчики поставили первой для того что бы зря не рассчитывались вычислимые поля для записей которые не будут отображаться... (но может они оставили какой либо механизм смены очередности событий?)



Просто OnFilterRecord является как-бы частью механизма BDE, а вычисляемые поля - это уже примочки TDataSet'а, и очередность событий здесь предопределена архитектурно.

Цитата:

Можно ли вмешаться в механизм выделения памяти под вычислимые поля? (Может после принудительного выделения памяти, можно будет вызвать OnCalcFields из OnFilterRecord ?)



Конечно, нет. Лучше всего забыть всю эту мутотень с подобными событиями и использовать SQL. Даже с BDE.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог