Сайт Индустриального Сберегательного Банка
 Страничка создана: 25.02.2005 Обновлена: 25.02.2005
Главная
RS-Bank
RSL
Pervasive/BTrieve
OpenOffice.org
О нас

Некоторые особенности работы с ключами BTrieve

Экзотика : флаги All Segment Null и Any Segment Null

Pervasive предлагает нам довольно мощное средство для фильтрации ненужных записей из набора. Для этого в Pervasive имеются ключи All Segment Null и Any Segment Null. В оболочке RSL РС-Банка эти флаги называются Null value и manuaL, соответственно.

All Segment Null (Null value)
Этот флаг будучи установлен во всех сегментах ключа, исключает запись из видимого набора записей таблицы (в т.ч. для всех операций поиска) если все сегменты ключа имеют нулевые значения.

Any Segment Null (manuaL)
В отличие от All Segment Null достаточным условием для исключения записи из набора является наличие нулевого значения хотя бы в одном из сегментов данного ключа.

Рассмотрим пример (для работы используем Оболочку RSL). Создадим таблицу из трех полей типа INTEGER: Id, V1, V2. Строим ключи для таблицы.
  • Ключ 1 :
    11 V1 (M NS E ) INTEGER
    12 V2 (M N  E ) INTEGER
  • Ключ 2 :
    21 V1 (M  S EL) INTEGER
    22 V2 (M    EL) INTEGER
Заполняем таблицу:
   Id V1 V2
    2  0  1
    3  1  0
    4  1  1

Что имеем в результате:
  • Ключ 1 :
     Id V1 V2
      2  0  1
      3  1  0
      4  1  1
    Запись Id=1 не включена в набор, так как V1 и V2 равны 0.
  • Ключ 2 :
     Id V1 V2
      4  1  1
    В данном случае осталась единственная запись Id=4, так как и V1 и V2 не равны 0.

Т.е. если вам необходимо скрывать какие либо записи из набора, вы просто добавляете в таблицу поле типа INTEGER, назвав его, например Visible. И в основные рабочие ключи добавляете сегмент с этим полем, проставив во все сегменты один из флагов Any- или All Null Value, в зависимости от ситуации. Это позволяет не тратить время на фильтрацию записей в обработчике Grid таблицы. Сервер все сделает за вас сам.

Ссылки по теме

  • www.pervasive.com - (англ.) Официальный сайт Pervasive
  • Mast's BRTRIEVE page - (англ.) Много полезного про BTrieve.
  • Reggatta Systems Inc. - (англ.) Официальный сайт разработчика великолепных компонентов для доступа к базам Pervasive/BTrieve из Deplphi и Borland С++ Builder

E-mail : ilya_hondo@mail.ru
Hosted by uCoz