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



ЗНАЕТЕ ЛИ ВЫ?

Конфигурирование BROWSE-окна

Поиск

LAST - конфигурация BROWSE-окна сохраняется в специальном системном так называемом ресурсном файле FOXUSER.DBF (если установлено SET RESOURCE ON) по завершении ко­манды BROWSE для использования в следующем сеансе. Ес­ли выход был сделан по Ctrl-Q, конфигурация не сохраняется.

PREFERENCE <вырС> - работает аналогично опции LAST, но дает возможность сохранить под определенным именем <вырС> параметры BROWSE-окна в файле FOXUSER.DBF для последующего использования. Конфигурация (и не одна), сохраненная с опцией PREFERENCE, может быть "заморожена" в целях дальнейшего использования. Для этого после выхода из команды BROWSE ресурсный файл должен быть отключен, а затем открыт командой USE и вызван на редактирование, например командой BROWSE. В базе FOXUSER.DBF ищется запись, где в поле NAME стоит <вырС>, а затем в поле READONLY значение.F. заменяется на.Т. (изменение запрещено). После этого ресурсный файл закрывается и снова подключается к системе. Теперь каждая загрузка команды BROWSE будет извлекать конфигураций BROWSE-окна из ресурсного файла, причем все пользова­тельские настройки, произведенные в текущем сеансе, в сле­дующих сеансах будут игнорироваться. Более того, в ресурс­ном файле под разными именами можно сохранить несколь­ко разных настроек для одной базы данных, которые можно выбирать, например, через программируемое меню, перед за­грузкой команды BROWSE. Команда BROWSE, использую­щая сохраненные настройки, в дальнейшем может приме­няться без всяких опций (кроме опции PREFERENCE) во­обще.

 

CHANGE/EDIT-окно

По функциям и возможностям команда CHANGE аналогична ко­манде BROWSE, но предъявляет все поля всех записей в одну колонку.

  • CHANGE [WHILE <условие>][опции]

Опции - набор режимов по составу и действию полностью ана­логичных опциям команды BROWSE (отсутствуют только опции NOLGRID/NORGRID). При разделении окна здесь также можно вывести данные в формате BROWSE. Параметр WHILE, указан­ный в формате команды, при проверке оказался не работоспособен.

При наличии условий в команде CHANGE в окно редактирова­ния выводится не столько записей, сколько удается разместить, а только одна текущая.

Команда CHANGE полностью идентична команде EDIT.

Замечание к вводу дат. При вводе данных в поля/переменные (коман­дами BROWSE/CHANGE, READ) типа дата мы обнаружим, что в такие поля разрешается вводить лишь содержательные данные в допустимом диапазоне. Не разрешается вводить пустую дату ({.. }), хотя дату такого вида мы можем видеть при первоначальном заполнении базы. В поля типа дата вводить пробелы вообще не удается. Между тем это важно, так как бывает, что дата не известна или же она еще не установлена. В этом случае неплохо оставить ее пустой, а не заполнять Временно бессмысленной, хотя формально и разрешенной датой. Возможность очистить такое поле су­ществует - это использование клавиш очистки поля Ctrl-Y.

Окна редактирования могут быть еще более адаптированы под любые запросы заказчика с помощью форматного файла или путем непосредственного использования команд @...SAY...GET. К этим вопросам мы вернемся ниже.

ПЕРЕМЕЩЕНИЯ В БАЗЕ ДАННЫХ

При работе с базой данных необходимы средства перемещение внутри нее. Запись, на которой находится указатель записей, яв­ляется текущей, и только к ней в данный момент возможен непосредственный доступ.

Имеется несколько разновидностей команд, изменяющих положение указателя записей:

  • GO TOP [IN <область>] файла;
  • GO BOTTOM [IN <область>] - переход к самой последней записи;
  • GO <вырN> [IN <область>] - переход к записи с указанным в <вырN> номером;
  • SKIP <вырN> [IN <область>] - переход к записи, отстоящей от текущей на указанное в <вырN> число записей.

В последней команде <вырN> может быть и отрицательным; что означает движение указателя назад. SKIP без параметра идентичен SKIP 1 (переход на следующую запись). Параметр IN <область> указывает над базой из какой рабочей области должна выполниться команда. Если он опущен, имеется в виду текущая рабочая область.

Для контроля положения указателя и наличия записей в файле предусмотрены функции:

  • RECNO([<область>]) - указывает номер текущей записи;
  • RECCOUNT([<oблacть>])- выдает общее число записей в файле базы данных, включая записи, помеченные к удалению;
  • ЕОР([<область>]) - функция конца файла. Она истинна (.Т.), если конец достигнут, и ложна (.F.) в противном случае;
  • ВОF([<область>]) - то же, но для начала файла.

Необязательный параметр <область> указывает, для какой ра­бочей области запрашивается значение функции. По умолчанию текущая область.

Функции в FoxPro имеют характерный синтаксис - скобки, даже если никакого аргумента нет, и они остаются пустыми.

ПРОСМОТР ДАННЫХ

Просмотр данных в FoxPro осуществляется очень близкими по смыслу и синтаксису командами LIST и DISPLAY:

DISPLAY [<границы>] [<поля>]

[WHILE <условие>]

[FOR <условие>]

[OFF]

[ТО PRINT/TO FILE <файл>]

Здесь:

OFF - указание на то, что номера записей не выводятся;

ТО PRINT - результат команды выдается на принтер;

ТО FILE <файл> - результат выдается в <файл>. Если не указать расширение имени, то оно будет ТХТ.

В качестве заголовка вывода командой выдаются имена полей базы данных. При заполнении экрана выполнение команды при­останавливается с индикацией указания "Нажмите любую клави­шу". При нажатии просмотр может быть продолжен. После выпол­нения команды указатель записи перемещается на последнюю по­казанную запись. Записи, помеченные к удалению, команда выдает со звездочкой (если SET DELETED OFF). Выдачу имен полей можно подавить командой

  • SET HEADING OFF

(восстановление - ON). Чтобы выдать мемо-поля, их имена нужно явно указать в списке FIELDS, иначе они выводятся просто столб­цом "memo". Команда

  • SET MEMOWIDTH <вырN>

определяет фактическую ширину строки для выводимого мемо-поля. Команда DISPLAY без параметров осуществляет выдачу всех полей базы данных только одной текущей записи.

Команда с похожими функциями LIST не делает периодических остановок при выдаче данных, и по умолчанию область ее действия не текущая запись, а весь файл. Ввиду этого, команда более пригодна для выдачи данных на принтер или файл. Выполнение команды LIST может быть инициировано в командном режиме нажатием клавиши F3, а команды DISPLAY - F8.

Приведенные команды удобны скорее для просмотра данных при отладке программ. Для включения их в программы они слишком грубы, и здесь лучше использовать более гибкие команды? и @... SAY.

 

УДАЛЕНИЕ ДАННЫХ

В FoxPro имеется несколько команд удаления данных:

· ERASE <файл> - удаление любого не открытого в данный момент файла. Расширение имени обязательно. Совершенно аналогичные функции выполняет команда DELETE FILE <файл>.

  • ZAP - удаление всех записей в активном файле базы данных с сохранением его структуры.
  • DELETE [<границы>] [WHILE <условие>] [FOR <условие>] - пометка к удалению записей в указанных границах и/или от­вечающих указанным условиям. DELETE без параметров по­мечает только одну текущую запись.
  • PACK [MEMO] [DBF] - физическое удаление помеченных ранее записей и сжатие файла. После выполнения команды указа­тель записей устанавливается в начало базы. Если имеются открытые индексы, они перестраиваются. По умолчанию упа­ковывается как файл данных (DBF), так и файл мемо-полей (FPT). Если указан параметр MEMO, то упаковывается толь­ко FPT-файл, если DBF - то только DBF-файл.
  • RECALL [<границы>] [WHILE <условие>] [FOR <условие>] - снятие пометок к удалению. RECALL без параметров действу­ет только на текущую запись.

 

Удаление записей в базе данных выполняется в два этапа: снача­ла пометка записей на удаление (она возможна и в окнах редакти­рования нажатием клавиш Ctrl-T) командой DELETE, а затем их физическое уничтожение командой PACK. Если упаковка файла еще не произведена, можно спасти нужные записи командой RECALL.

Команду PACK имеет смысл применять не только для удаления за­писей, но и для сжатия MEMO-полей (PACK MEMO). Дело в том, что даже при видимом уменьшении размера MEMO-поля (например, в ре­зультате редактирования) уменьшается только доступная пользователю часть, но размер самого FPT-файла никогда не сокращается. Таким образом, при интенсивном обновлении данных с участием MEMO-полей вполне возможно недопустимое "разбухание" файла примечаний.

Для иллюстрации работы FoxPro применена команда?, вы дающая на экран перечисленные в ней выражения. Более подробно команда будет рассмотрена позже.

Команда сжатия PACK в базе реальных размеров выполняется! медленно, и поэтому лучше ее делать один раз в день или даже раз в несколько дней. Чтобы помеченные к удалению записи до их уничтожения не участвовали далее в обработке данных, можно использовать команду

  • SET DELETED ON

При этом такие записи делаются как бы невидимыми для FoxPro и пользователя, за исключением случаев прямого на них указания. Например, команда GO 20 установит указатель записей на двадцатую запись независимо от того, была или нет она помечена. По умолчанию принято значение OFF.

 

ИЗМЕНЕНИЕ ДАННЫХ

В FoxPro имеется возможность не только вручную редактировать данные, но и изменять их путем присвоений или вычислений.

REPLACE [<границы>] [WHILE <условие>] [FOR <условие>] <поле1> WITH <выражение> [,<поле2> WITH <выражение>...]

[ADDITIVE]

[NOOPTIMIZE]

Эта команда осуществляет множественное изменение полей базы данных в соответствии с заданными выражениями, в установлен­ных границах и при заданных условиях. Если отсутствует параметр <границы> или <условия>, изменена будет только текущая запись. Параметр ADDITIVE действует для мемо-полей и означает, что за­данное <выражение> будет дописываться в конец поля. Если этот параметр опущен, то старое значение мемо-поля будет замещено <выражением>.

Команда REPLACE эквивалентна знаку равенства в операции присвоения для переменных. Буквально фраза <поле> WITH <выражение> соответствует присвоению <поле>=<выражение>.

В команде REPLACE можно делать сразу несколько присвоений в том числе и одному и тому же полю. Они тогда выполняются cлева - направо. Так, предыдущий пример может быть реализован одной, а не двумя командами REPLACE:

Очистку полей базы данных выполняет команда

BLANK [<границы>] [FIELDS <поля>]

[WHILE <условие>] [FOR <условие>] [NOOPTIMIZE]

Если отсутствуют <границы> или <условия>, очищена будет только текущая запись. BLANK без параметра FIELDS очищает все поля базы.

 

ФИЛЬТРАЦИЯ ДАННЫХ

В FoxPro определены два вида фильтров данных: фильтр для строк, когда ограничивается количество строк, предъявляемых на экран, и фильтр для полей, когда ограничивается количество полей, отображаемых на экране и, следовательно, доступных для редактирования.



Поделиться:


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

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