Сопутствующие команды в Microsoft Visual FoxPro
« Назад Команда SET TABLEVALIDATE TO [nLevel]задает уровень проверки таблицы. Перед употреблением команды таблица первоначально быть открыта в режиме монопольного доступа. Впоследствии режим использования таблицы может быть изменен. Параметр: nLevel – устанавливает уровень проверки таблицы; задается как сумма приведенных в табл. 15.6 значений. Таблица 15.6 Значения для параметра nLevel
Установку TABLEVALIDATE можно задать в файле конфигурации: TABLEVALIDATE = nLevel Если работа с таблицей ведется в режиме монопольного доступа и SET TABLEVALIDATE установлен в 8 или в большее значение, то эта установка игнорируется. Команда FLUSHсохраняет существующие в оперативной памяти изменения в таблицах и индексах на диске. VFP автоматически сохраняет изменения на диск, когда
Команда SET AUTOINCERROR ON | OFFзадает, будет ли генерироваться ошибка при попытке обновить или добавить поле с автоматически увеличиваемым значением. Употребляется при работе с такими командами, как APPEND FROM и INSERT INTO. Опции: ON – (по умолчанию действует) ошибка генерируется. OFF – ошибка не генерируется; для autoinc-поля используется соответствующее значение, подаваемое значение игнорируется. Замечание. Таблица (курсор), когда открывается, наследует установку SET AUTOINCERROR. Последующее изменение установки команды в текущей сессии данных не изменяет установки открытых таблиц (курсоров). Для курсора это осуществляется функцией CURSORSETPROP( ). Установка SET AUTOINCERROR сохраняется с текущей сессией данных. Команда SET BLOCKSIZE TO nBytesзадает размер блока, используемый при размещении memo-полей на диске. Параметр: nBytes – размер блока в байтах, используемый при размещении memo-полей на диске. Если nBytes = 0, то размер блока – 1 байт. Если 1 ≤ nBytes ≤ 32, то размер блока равен 512 * nBytes. Если nBytes > 32, то размер блока равен nBytes. При задании nBytes > 32 можно получить существенную экономию дисковой памяти. По умолчанию SET BLOCKSIZE установлен в 64. Для изменения размера блока уже существующего файла следует произвести соответствующую установку SET BLOCKSIZE, а затем выполнить копирование таблицы и ее memo-файла (команда COPY TO). Скопированная таблица будет использовать новый размер блока. Установка SET BLOCKSIZE сохраняется с текущей сессией данных. Команда SET DELETED ON | OFFопределяет, будет ли VFP обрабатывать записи с пометкой удаления или нет. Опции: ON – указывает, что записи с пометкой удаления игнорируются командами, оперирующими диапазоном записей. OFF – (по умолчанию) задает режим обработки помеченных для удаления записей. Замечание. SQL – SELECT выбирает, если SET DELETED установлен в OFF, записи с пометкой удаления, сохраняя ее в результате. SET DELETED игнорируется, если по умолчанию диапазон команды – это текущая запись или если параметром Scope задается одна запись. Исключение составляет команда SEEK, всегда учитывающая SET DELETED. Команды INDEX и REINDEX всегда игнорируют SET DELETED, индексирую все записи таблицы. Установка команды сохраняется с текущей сессией данных. Команда SET EXCLUSIVE ON | OFFопределяет, будет ли VFP открывать таблицы для монопольного или разделяемого доступа. Опции: ON – (по умолчанию для глобальной сессии данных) задает режим монопольного доступа. В отличие от FLOCK( ) команда SET EXCLUSIVE ON также препятствует доступу "только для чтения". Команды INSERT, INSERT BLANK, MODIFY STRUCTURE, PACK, REINDEX и ZAP могут выполняться, если таблица открыта монопольно. Второй способ открыть таблицу монопольно – это использовать команду USE с опцией EXCLUSIVE. OFF – (по умолчанию для частных сессий данных) обеспечивает, если с командой USE не употребляется опция EXCLUSIVE, открытие таблиц для разделяемого доступа. Замечание. Выполнение SET EXCLUSIVE не изменяет статус ранее открытых таблиц. Установка команды сохраняется с текущей сессией данных. Команды SET FIELDS ON | OFF | LOCAL | GLOBALи SET FIELDS TO [[FieldName1 [, FieldName2 ...]]
|
ACTIVATE SCREEN |
ACTIVATE WINDOW |
APPEND MEMO |
BROWSE |
DECLARE |
DIMENSION |
GO | GOTO |
FSIZE( ) |
INKEY( ) |
LASTKEY( ) |
LIKE( ) |
Команды меню |
PLAY MACRO |
RUN | ! |
SET FIELDS |
SET MESSAGE |
SET MEMOWIDTH |
SET PRINTER TO FileName |
STORE |
SUM |
TRANSFORM( ) (с числовыми кодами в PICTURE) |
SELECT( ) |
SYS(2001, "COLOR") |
|
PROMPT – появляется Convert Memos-диалог, когда открывается dBASE-таблица с memo-полем. Если memo-поле при открытии dBASE-таблицы не преобразовано в формат VFP, то это можно сделать позже, употребив команду COPY TO с опцией TYPE FOXPLUS.
NOPROMPT – Convert Memos-диалог не появляется, и dBASE memo-файл преобразовывается в формат VFP автоматически.
Команда
SET FILTER TO [lExpression] [IN nWorkArea | cTableAlias]
задает условия, такие, что отвечающие им записи текущей или указанной опцией IN таблицы доступны. Записи, этим условиям не отвечающие, недоступны. То есть они не отображаются, например, в Browse-окне, не могут быть найдены командами LOCATE и SEEK (или функцией SEEK), удалены и т. д.
Параметр:
lExpression – условия, которым должны удовлетворять записи.
Если текущая таблица индексирована по полю или полям, имеющимся в lExpression, и индексы открыты, то будет выполнена рашмор-оптимизация запросов, определяемых lExpression.
Выполнение SET FILTER TO без lExpression отключает фильтр текущей или указанной опцией IN таблицы.
Фильтр устанавливается для каждой таблицы отдельно.
Условия, заданные SET FILTER, не оцениваются, пока выполняется изменение позиции DBF-файла.
Установки SET FILTER не оказывают влияния на SQL-команды (DELETE, SELECT и др.)
Пример. SET FILTER делает доступными записи только с четными значениями поля AuthorId.
close databases
open database d:\HomeLibrary\HomeLibrary.dbc
use Authors order AuthorId
&& Задаем условие доступности записей
set filter to Mod(AuthorId, 2) = 0 in Authors
&& Просмотр таблицы; результат см. на рис. 15.9
browse last
Рис. 15.9. Действие set filter to mod(AuthorId, 2) = 0
Если выполнить при установленном фильтре
? Seek(1) && Ищем автора с AuthorId = 1
то на экране появится .F., хотя запись с таким значением AuthorId в таблице имеется.
Выполним теперь
set filter to
? Seek(1) && Напечатает: .T.
При действующем set filter to Mod(AuthorId, 2) = 0 команда
delete for AuthorId = 1
будет нерезультативной – пометка удаления проставлена не будет. Однако SQL-команда
delete from Authors where AuthorId = 1
в записи с AuthorId = 1 пометку удаления разместит.
Команда
SET FULLPATH ON | OFF
определяет, будут ли функции CDX( ), DBF( ), MDX( ) и NDX( ) возвращать полное имя файла или только имя файла с именем диска.
Полное имя возвращается, если задана опция ON.