Распечатать страницу

Команды для символьных данных в VFP

« Назад

Рассматриваются команды SET ANSI, SET COLLATE и SET EXACT. Установки, задаваемые этими командами, можно изменять на вкладке Data диалогового окна Options меню Tools.

Команда

SET COLLATE TO cSequenceName

задает последовательность сравнения символьных полей при индексировании и сортировке таблиц.

Параметр:

cSequenceName – последовательность сравнения; может принимать в том числе значения "MACHINE" (по умолчанию), "GENERAL" и "RUSSIAN".

Если SET COLLATE отличается от "MACHINE" и если создается IDX-файл, то он всегда будет компактным.

Collate-последовательность можно установить в файле конфигурации, задав

COLLATE = cSequenceName

Изменение установки SET COLLATE не влияет на collate-последовательность ранее открытых индексов. Создаваемые индексы автоматически настраиваются VFP в соответствии с установленной collate-последовательностью.

Если не соблюдается соответствие между кодовой страницей и cSequenceName, то возникнет ошибка "Collating sequence <cSequenceName> is not found." Так,

set collate to "RUSSIAN"

можно задавать, если текущей является 1251 (Russian Windows) кодовая страница.

В то же время при работе с такой кодовой страницей нельзя задать

set collate to "GENERAL"

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

set collate to "MACHINE"  && Действует по умолчанию

Установка SET COLLATE сохраняется с текущей сессией данных.

Команда

SET EXACT ON | OFF

задает правила сравнения двух строк и двоичных данных разной длины. На результат операции "==" установка SET EXACT влияния не оказывает.

Опции:

ON – строки равны (двоичные величины), если при посимвольном (побайтном) сравнении обнаружено равенство всех символов (байтов). Длины сравниваемых строк (двоичных величин) выравниваются за счет добавления пробелов (нулевых байтов) к более короткой строке (двоичной величине).

OFF – (по умолчанию) строки (двоичные величины) равны, если при посимвольном (побайтном) сравнении все символы (байты) правого операнды равны соответствующим символам (байтам) левого. Длины сравниваемых строк не изменяются.

Различные ситуации, возникающие при сравнении, рассмотрены в табл. 3.24.

Таблица 3.24

Примеры влияния SET EXACT на результат сравнения

Выражение

Результат сравнения

Операция "="
(EXACT OFF)

Операция "="
EXACT ON

Операция "=="
EXACT ON или OFF

"abc" = "abc"

.T.

.T.

.T.

"ab" = "abc"

.F.

.F.

.F.

"abc" = "ab"

.T.

.F.

.F.

"abc" = "ab "

.F.

.F.

.F.

"ab" = "ab "

.F.

.T.

.F.

"ab " = "ab"

.T.

.T.

.F.

"" = "ab"

.F.

.F.

.F.

"ab" = ""

.T.

.F.

.F.

space(5) = ""

.T.

.T.

.F.

"" = space(5)

.F.

.T.

.F.

Установка SET EXACT сохраняется с текущей сессией данных.