Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора по информатике.docx
Скачиваний:
6
Добавлен:
18.09.2019
Размер:
819.82 Кб
Скачать
    1. Структура команд

Команды FoxPro, ориентированные на обработку файлов базы данных, в самом общем виде имеют следующий синтаксис:

НАЗВАНИЕ [<границы>] [<список выражений>] [FOR <условие>] [WHILE <условие>]

Здесь:

НАЗВАНИЕ – имя команды;

<границы> – границы действия команды, которые могут иметь одно из следующих значений:

  • ALL – все записи базы данных;

  • REST – все записи, начиная с текущей, до конца базы;

  • NEXT <N> – следующие N записей, начиная с текущей;

  • RECORD <N> – запись номер N;

FOR <условие> – выполнение команды только для записей, отвечающих <условию>;

WHILE <условие> – выполнение команды только до тех пор, пока не перестанет выполняться <условие>.

Слова FOR и WHILE могут присутствовать в команде одновременно. В этом случае WHILE-условие, очевидно, имеет приоритет перед FOR-условием.

П р и м е р: LIST NEXT 10 FIELDS fam,tab,dtr FOR fam=’П

Название Границы Выражение FOR-условие

Порядок следования элементов команды (за исключением “названия”, которое всегда располагается на первом месте) произвольный. По умолчанию, если отсутствуют <границы> или <условия>, сферой действия команды является одна только текущая запись, или, наоборот, вся база данных.

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

Символьные константы в FoxPro выделяются апострофами, кавычками или квадратными скобками.

Константы типа “дата” берутся в фигурные скобки (например, {09.11.95}). Пустая дата ({ . . }) вообще может быть задана одними фигурными скобками {}.

Логические константы T (истина) и F (ложь) в тексте программ обрамляются точками.

42 Команды foxpro: перемещение по бд, просмотр данных, удаление данных, изменение данных, фильтрация данных, поиск информации.

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

GO TOP – переход к самой первой записи файла;

GO BOTTOM – переход к самой последней записи;

GO <вырN> – переход к записи с указанным в <вырN> номером;

SKIP <вырN>- переход к записи, отстоящей от текущей на указанное в <вырN> число записей.

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

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

RECNO([<область>]) – указывает номер текущей записи;

RECCOUNT([<область>]) – выдает общее число записей в файле БД, включая записи, помеченные к удалению;

EOF([<область>]) – функция конца файла. Она истинна, если конец достигнут, и ложна в противном случае BOF([<область>]) – то же, но для начала файла.

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

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

Просмотр данных в FoxPro осуществляется очень близкими по смыслу и синтаксису командами LIST и DISPLAY (см. Помощь). Команда LIST не делает периодических остановок при выдаче данных, и по умолчанию область ее действия не текущая запись, а весь файл. Ввиду этого команда более пригодна для выдачи данных на принтер/файл. Приведенные команды удобны скорее для просмотра данных при отладке программ. Для включения их в программы они слишком грубы, и здесь лучше использовать более гибкие команды ? и @ ...SAY.

DELETE (см.Помощь) – пометка к удалению записей в указанных границах и/или отвечающих указанным условиям. Без параметров помечает только одну текущую запись.

RECALL (см.Помощь) – снятие пометок к удалению. Без параметров действует только на одну текущую запись. Физическое удаление записей осуществляется командой PACK.

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

REPLACE (см. Помощь) – осуществляет множественное изменение полей БД в соответствии с заданными выражениями, в установленных границах и при заданных условиях. Практически (за некоторыми исключениями) только командой REPLACE в FoxPro можно изменять значения полей файла БД. В этом смысле она эквивалентна знаку равенства в операции присвоения для переменных.

Синтаксис

REPLACE FieldName1 WITH eExpression1

[, FieldName2 WITH eExpression2] ...

[Scope] [FOR lExpression1] [WHILE lExpression2]

Параметры

FieldName1 WITH eExpression1 [, FieldName2 WITH eExpression2 ... ]

Указывает, что данные в поле FieldName1 должны быть заменены значением выражения eExpression1, данные в поле FieldName2 _ значением выражения eExpression2 и т.д.

Если значение выражения не вмещается по ширине в числовое поле, команда REPLACE вписывает выражение в поле путем дополнительной обработки:

  1. Вначале REPLACE отбрасывает несколько десятичных знаков и округляет оставшуюся десятичную часть поля.

  2. Если значение по-прежнему не помещается, REPLACE сохраняет содержимое поля, используя экспоненциальное представление.

  3. Если значение все равно не помещается, REPLACE замещает содержимое поля звездочками.

Scope

Задает диапазон заменяемых записей. Будут заменены только записи, попадающие в указанный диапазон. Он задается следующими предложениями: ALL, NEXT nRecords, RECORD nRecordNumber и REST. По умолчанию областью действия команды REPLACE является одна текущая запись (NEXT 1).

FOR lExpression1

Указывает, что заданные поля могут быть замещены только в тех записях, для которых выражение lExpression1 имеет значение "истина" (.T.). Предложение FOR позволяет производить условную замену записей, отфильтровывая те из них, которые не нужно менять.

WHILE lExpression2

Задает условие, в соответствии с которым поля будут заменяться, пока значением логического выражения lExpression2 остается "истина" (.T.).

Буквально фраза <поле> WITH <выражение> соответствует присвоению <поле>=<выражение>.

Исключительно важную группу команд в FoxPro образуют средства выделения и поиска данных в БД.