- •Тема 2.2. Управление записями: добавление, редактирование, удаление и навигация
- •1. Заполнение базы данных Открытие файла базы данных
- •Дополнение базы данных
- •2. Окно редактирования
- •2.1. Browse-окно
- •Управление доступом к полям базы
- •Контроль редактирования записей
- •Ограничение возможности редактирования данных
- •3. Перемещения в базе данных
- •4. Просмотр данных
- •5. Удаление данных
- •6. Изменение данных
Контроль редактирования записей
Следующие опции аналогичны рассмотренным ранее ключам :V, :W, :E и :F при определении возможности выхода из текущего поля, но распространяются на всю запись целиком. При этом могут анализироваться любые условия:
WHEN <условие> - определяет возможность доступа к записи. Если <условие> ложно или был возвращен 0, запись доступна только для чтения.
VALID <условие> [ERROR <вырС>] - анализирует выполнение <условия> для текущей записи, если в ней произошло изменение данных и вы хотите перейти к другой записи. Если условие истинно (.Т.), запись покинуть разрешается, если ложно (.F.) или равно 0 - нет, и при этом появляется стандартное сообщение об ошибке "Invalid Input" либо любое другое, заданное в <вырС>. Контроль может быть усилен включением параметра :F. При этом проверка условия будет выполняться независимо от того, меняли вы данные в записи или нет.
Все опции и ключи доступа к полям/записям базы данных позволяют не только организовать контроль ввода данных, но реализовать и более широкие функции.
Ограничение возможности редактирования данных
NOAPPEND - дополнение базы с помощью клавиш Ctrl-N невозможно.
NOEDIT7NOMODIFY - редактирование невозможно. Разрешены пометка к удалению и дополнение базы.
NODELETE - пометка к удалению записей базы данных с помощью клавиш Ctrl-T или мышью невозможна.
FREEZE <поле> - указывает единственное <поле>, значение которого разрешается редактировать. Остальные поля только отображаются.
3. Перемещения в базе данных
При работе с базой данных необходимы средства перемещения внутри нее. Запись, на которой находится указатель записей, является текущей, и только к ней в данный момент возможен непосредственный доступ.
Имеется несколько разновидностей команд, изменяющих положение указателя записей:
• GO TOP [IN <область>] - переход к самой первой записи файла;
• GO BOTTOM [IN <область>] - переход к самой последней записи;
• GO <BbipN> [IN <область>] - переход к записи с указанным в <BbipN> номером;
• SKIP <BbipN> [IN <область>] - переход к записи, отстоящей
от текущей на указанное в <BbipN> число записей. , В последней команде <BblpN> может быть и'отрицательным, что означает движение указателя назад. SKIP без параметра идентичен SKIP 1 (переход на следующую запись). Параметр IN <область> указывает над базой из какой рабочей области должна выполниться команда. Если он опущен, имеется в виду текущая рабочая область.
Для контроля положения указателя и наличия записей в файле предусмотрены функции:
• RECNO([<o6nacTb>]) - указывает номер текущей записи;
• RECCOUNT([<o6nacTb>])- выдает общее число записей в файле базы данных, включая записи, помеченные к удалению;
• ЕОF([<область>]) - функция конца файла. Она истинна (.Т.), если конец достигнут, и ложна (.F.) в противном случае;
• ВОF([<область>]) - то же, но для начала файла. Необязательный параметр <область> указывает, для какой рабочей области запрашивается значение функции. По умолчанию
текущая область. Функции в FoxPro имеют характерный синтаксис - скобки, даже
если никакого аргумента нет и они остаются пустыми.