Управление доступом к полям базы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Управление доступом к полям базы



FIELDS <список полей> - перечень предъявляемых полей. По умолчанию отображаются все поля базы данных. Имя каждого поля может сопровождаться ключами, определяющими режим доступа к нему:

[:<вырМ>]

[:V = <вырL1> [:F] [:E = <вырС1>]]

[:P = <вырС2>]

[:H = <вырС3>]

[:B = <выр1>,<выр2> [:F]]

[:W = <вырL2>]

Здесь символ ": " может быть заменен на тождественный ему сим­вол " / ", если последний не будет интерпретироваться как знак деле­ния (это возможно для параметра:<вырN>). Мы далее всегда бу­дем использовать знак ": ".

Перечисленные ключи имеют следующие значения:

-r - разрешен только просмотр поля (Read-Only), однако курсор в поле допускается и, следовательно, в нем, например, могут быть обработаны нажатия заданных клавиш, а также задей­ствованы ключи :V и :W.

<вырN> - видимый размер поля в BROWSE-окне. Если фактиче­ский размер поля больше, предусмотрен скроллинг.

:V=<вырL1> - контроль выхода из поля. Проверка вводимых данных выполняется по <вырN> после изменения содержимого поля. Ес­ли <вырL>=.T., ввод считается правильным и курсор переходит в следующее поле. Если <вырL>=.F., выдается стандартное сооб­щение "Invalid input" ("Неверный ввод"), которое может быть за­менено на собственное, заданное с параметром . Допустимы ПФ. Ключ V соответствует опции VALID команды ввода @...GET, которая будет рассмотрена позже.

:F - проверка не только вводимых, но и уже существующих данных независимо от способа выхода из поля.

:Е=<вырС1> - выдача собственного <вырС1> сообщения на не­правильный ввод данных. Если <вырLl> вычисляется как числовое и в результате получено значение 0, сообщение не выдается и выхода из поля не происходит. Это дает возмож­ность создавать собственные подпрограммы сообщений об ошибках из процедур обработки ошибок. По действию ключ аналогичен опции ERROR команды @...GET.

:Р=<вырС2> - задание формата отображения данных с помощью шаблона Picture или символов форматной функции ввода-вывода (кроме кода "М"). Шаблоны и коды форматных функ­ций описаны в команде @...SAY...GET при рассмотрении опций PICTURE и FUNCTION.

:В~<выр1>,<выр2> - указание границ чисел или дат. Не допуска­ются ПФ. Возможно указать только одну из границ, но запя­тая должна присутствовать обязательно. Может быть усилена параметром:F. Ключ В соответствует опции RANGE команды @...GET.

:Н:=<вырС3> - указание собственного заголовка поля. Разрешены ПФ. По умолчанию в качестве заголовков выводятся имена полей. Если заголовок не нужен вообще, следует в качестве <вырС3> использовать пробел ('').

:W=<вырL2> - контроль входа в поле. Запрещены вход и редакти­рование, если <вырL2>=.F., и разрешены, если <вырL2>=.T.. Допустимы ПФ. Входом в поле считается перемещение в него курсора любым способом, в том числе и мышью. Ключ W со­ответствует опции WHEN команды @...GET.

Отбор данных

Следующие исключительно важные опции позволяют ограничить доступ в базе только к определенному множеству записей.

FOR <условие1> - устанавливает фильтр записей для базы. В BROWSE-окне предъявляются только записи, удовлетворяю­щие заданному <условию>.

Пример:

USE tadr

BROWSE FOR szar>=530000.AND.szar<=750000

Здесь команда BROWSE предъявляет только те записи базы KADR.DBF, в которых значения поля SZAR (средняя зарплата) от 530000 до 750000 руб. Если имеются соответствующие индекс­ные файлы, фильтрация данных будет выполняться с их участием и использованием оптимизирующей технологии Rushmore, т.е. гораздо быстрее. Такой индекс, естественно, должен быть открыт. Опция NOOPTIMIZE отключает оптимизацию. REST - удобно использовать совместно с FOR-условием. Это предотвращает повторный поиск в базе с самого ее начала записей, отвечающих <условию> при повторном вызове BROWSE-окна. Курсор остается на текущей записи, если, конечно, она удовлетворяет <условию>.

KEY <выр1> [,<выр>2>] - ограничение действия команды диапазо­ном ключевого выражения <выр1> и <выр2> активного ин­дексного файла.

Пример:

USE kadr

INDEX ON szar TO kadrzar BROWSE KEY 530000,750000

Пример по целям аналогичен предыдущему, но для функцио­нирования такого режима доступа к данным уже обязательно наличие предварительно созданного индексного файла KADRZAR.IDX по полю SZAR. По возможности следует использовать быструю фильтрацию с применением индексных файлов непосредственно (опция KEY) или по технологии Rushmore (опция FOR). Индексирование и техноло­гия Rushmore будут рассмотрены далее.

Вычисляемые поля

В <список полей> могут включаться вычисляемые поля. Эти поля являются функциями других полей, переменных и т.д. Такие поля не могут редактироваться и не запоминаются в базе данных. Вычисляемые поля сами могут содержать пользовательские, функции что делает их важным средством отображения и управления дан­ными. Например, в команде BROWSE для базы KADR.DBF введем вычисляемое поле РОМ для определения материальной помощи Считаем, что помощь устанавливается на одного ребенка в размеру 70% средней зарплаты, но не более 90000 руб. и только тем, у когс средняя зарплата не превышает 300000 руб. Таким образом POM=IIF(szar>300000, 0, MIN(0.7*szar*det, 90000)).

Здесь, забегая вперед, мы использовали две новые функции) MIN() и IIF() - Функция MIN() возвращает минимальное значение из 0.7*szar*det и 90000. Функция IIF() возвращает 0, если szar>300000, или MIN() в противном случае.

Видимый размер вычисляемого поля РОМ будет определяться принятыми умолчаниями на размер числовых выводов. Этим про­цессом можно (и лучше) управлять с помощью параметра ограничения длины поля:<вырN>. Еще удобнее применение шаблонов (ключ ), которыми может быть установлена не только длина, но и формат выдачи.

Разделение окна

В режиме разделения Browse-окно разбивается на два смежных окна, в которых отображаются данные из базы/баз, возможно, в разной форме. Это может быть удобно, например, если надо сделать неподвижной какую-то часть данных в одном окне при горизонтальном и вертикальном перемещении в другом.

LOCK <вырN> - BROWSE-окно делится на две части, где первые <вырN> полей всей базы или из списка FIELDS (если есть) дублируются в левой части окна. Перебрасывается курсор в другую половину окна нажатием клавиш Ctrl-H или мышью.

PARTITION <вырN> - то же, но граница будет проходить по ко­лонке номер <вырN>.

LEDIT/REDIT - опции действуют только в разделенном окне. Они указывают, будут ли слева/справа (LeftEDIT/RightEDIT) от ли­нии разделения данные показаны, как в CHANGE-окне (EDIT -другое имя команды CHANGE). В противоположной части ок­на поля останутся расположенными горизонтально.

LPARTITION - курсор устанавливается в левой половине разде­ленного окна (по умолчанию - в правой половине).

NOLINK - несинхронное перемещение видимых записей в разде­ленных окнах. При движении курсора в одной половине окна записи в другой половине остаются неподвижными. Это удобно, например, в случае, если нужно получить доступ сразу к двум записям одной базы данных или если установлена связь между базами типа один-ко-многим для перемещения в под­чиненной базе при неподвижной записи из старшей базы. По умолчанию записи синхронно перемещаются в обеих поло­винах окна.

NOLGRID/NORGRID - удаляет вертикальные линии-разделители полей в левой/правой части разделенного окна. По умолча­нию разделители есть. Если окно не разделено, вертикальные линии удаляются опцией NORGRID.



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 138; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.36.30 (0.01 с.)