механизм HOOKов на SQL операции

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

механизм HOOKов на SQL операции

Сообщение Andrew™ »

не помню, говорил или нет, в библе реализован механизи HOOKов, при исполььзовании INSERT, UPDATE,DELETE операций. Мне это очень помогло, например, есть склад, вчера один, сегодня много,есть год, был один сегодня много, нужна фильтрация по году, по складу, но таких запросов в программе немерянно(программа раньше не занла не про номер склада не про год), те имеют место быть новые поля НОМЕРСКЛАДА и НОМЕРГОДА, система раньше не работала в таком режиме (эти новые поля не учитывала), в одном месте сделел через HOOKи добавление фильтрации по требуемым полям и гигантское приложение опять нормально работает. я думаю это полезная фича.
Можно такие действия делать через глобальные переменные сессиии, одна запись в одной таблице - регистрация сессии, а доступ к таблицам через SQL VIEW, что я и делал сначала, появились тормоза (при JOINах по SQL VIEW), перешёл на SELECT from TABLE where диначимеский фильтр, если кому интересно - расскажу.
Rimas
Ветеран
Сообщения: 496
Зарегистрирован: 07 Ноябрь 2005, 15:48
Откуда: Литва

Сообщение Rimas »

Мне интересно
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Rimas писал(а):Мне интересно
вот тут полнофункциональная вырезка из рабочего проекта, суть сводится к тому - как переопределить вызовы любой процедуры или функции в Run Time на свою, т е что то предварительно сделатть и вызвать шатную функцию иле не вызвать

базовый класс W_HookFunc
в W_SQL переопределяются вызовы следующих функций:

Код: Выделить всё

MAVGET
MAVINSERT
MAVUPDATE
MAVDELETE
MAVPREPARESELECT
код прозрачный, думаю будет понятно как юзать для своих целей
http://mavcla.arsis.ru/Download/w_hook.rar
Ответить