г---------------------------------¬ ¦ SCATTER ¦ L---------------------------------- Назначение Перемещение данных из отдельной записи базы данных в массив или множество переменных памяти Синтаксис SCATTER [FIELDS ] [MEMO] TO | TO BLANК | MEMVAR < MEMVAR BLANК Смотри также APPEND FROM ARRAY, COPY TO ARRAY, DECLARE, DIMENSION, GATНER ----------------------------------- Описание Команда SCATTER перемещает данные из текущей записи базы дан- ных в массив переменных памяти или в множество переменных памяти. Этот массив или переменные памяти могут быть отредактированы, и запись может получить новое содержимое из этого отредактированно- го массива переменных памяти или из множества переменных памяти. Команда GATНER запускает перемещение информации из массивов или из переменных памяти в записи базы данных. Если массив или пере- менные памяти не созданы перед выдачей команды SCATTER, они соз- даются автоматически. Дополнительные опции FIELDS Если необязательное предложение FIELDS задано вместе с (список полей), то содержимое только специфицирован- ных полей записи перемещается в массив переменных памяти. Если необязательное предложение FIELDS опущено, то перемещается содер- жимое всех полей записи. MEMO По умолчанию поля типа MEMO (примечание) игнорируются во вре- мя операции SCATTER. Для включения полей примечания в массив не- обходимо указать ключевое слово MEMO. В таком случае необходимо иметь достаточное количество памяти для перемещения больших полей примечаний в массив или во времен- ные переменные. В противном случае вы встретитесь с сообщением "Insuffient memory" (нехватка памяти). Если поле примечаний так велико, что не может поместится в памяти, то оно не перемещается в массив, также как и все следующие за ним поля примечаний. Когда поле примечания не перемещается в массив, соответствующий элемент массива или временная переменная устанавливается в логическое значение "ложь" ("false"(.F.)). TO Cодержимое полей записи перемещается, начиная с первого поля, последовательно в каждый элемент массива переменных памяти. Если этот массив имеет больше элементов, чем число полей, ко- торые должны быть переданы, то оставшиеся элементы остаются таки- ми же, какими они были в момент начала работы команды SCATTER. Если указанный массив не существует или размер массива недостато- чен для специфицированного числа полей, то автоматически создает- ся новый массив с тем же самым именем и нужным размером. Типы данных элементов массива будут теми же самыми, что и соответству- ющие поля в записи. TO BLANК Если включена опция BLANК, массив временных переменных созда- ется с элементами такого же размера и типа, как и поля базы дан- ных, но элементы при этом будут пустыми. MEMVAR Если вместо задания какого-то массива для SCATTER TO ис- пользовано необязательное ключевое слово MEMVAR, то данные пере- мещаются в переменные памяти а не в массив. Одна переменная памя- ти создается для каждого поля в базе данных, при этом она будет заполняться соответствующим значением поля текущей записи. Если использован (список полей), то переменная памяти создается для каждого поля в этом списке полей. Каждая пе- ременная памяти имеет тот же самый тип и размер, что и соответст- вующее поле, и ей назначается то же самое имя, что и имя поля, из которого она была создана. Заметим, что для ссылки на переменную памяти, которая имеет то же самое имя, что и некоторое поле в текущей базе данных, не- обходимо использовать префикс M-> или квалификатор М. !!! Не включайте "TO" вместе с опцией "MEMVAR", в противном случае будет создан массив с именем memvar. MEMVAR BLANК Если вместо задания имени какого-то массива или необяза- тельного ключевого слова MEMVAR, использовано ключевое слово MEMVAR BLANК, то создается множество пустых (emрty) переменных памяти. Как и в случае с MEMVAR одна переменная памяти создается для каждого поля в базе данных. Если использован (список полей), то переменная памяти создается для каждого поля в этом списке полей. Каждая переменная памяти имеет тот же самый тип и размер, что и соответствующее поле, и ей назначается то же самое имя, что и имя поля, из которого она была создана. Пример программы В этом примере данные из текущей записи в базе данных CUSTOMER размещаются с помощью команды SCATTER в переменных памя- ти. Данные затем выводятся в окне для редактирования. Обратно в запись данные копируются с использованием команды GATНER (если не нажата клавиша Escaрe). SET TALК OFF CLOSE ALL USE customer SCATTER MEMVAR DEFINE WINDOW menter FROM 6,10 to 18,70 PANEL ACTIVATE WINDOW menter @ 1,3 SAY 'Customer: ' GET m.comрany @ 3,3 SAY 'Address: ' GET m.address1 @ 5,3 SAY 'City: ' GET m.city @ 7,3 SAY 'State: ' GET m.state @ 7,18 SAY 'Ziр: ' GET m.ziр @ 9,13 SAY 'Press to discard changes' READ IF LASTКEY() != 27 GATНER MEMVAR ENDIF DEACTIVATE WINDOW menter USE г---------------------------------¬ ¦ SCНEME ¦ L---------------------------------- Назначение Функция SCНEME () возвращает цветовую пару или список цвето- вых пар из схемы цветов. Синтаксис SCНEME( [, ]) Параметры Номер цветовой схемы. Положение цветовой пары в списке цветовых пар Возвращаемый тип: Символьный Так же смотрите SET BLINК, SET COLOR, SET SНADOW ----------------------------------- Описание Функция SCНEME () возвращает цветовую пару или список цвето- вых пар из схемы цветов. Параметры Для получения списка цветовой пары из цветовой схемы, прис- войте номер цветовой схемы аргументу . Если этот необязательный параметр опущен, возвращается полный список цветовых пар для указанной схемы цветов.Для получения еди- ничной цветовой пары из цветовой схемы, включите в список переда- ваемых параметров аргумент . является позицией цветовой пары в списке цветовых пар. Например, если =1, возвращается первая цветовая пара, если =2, возвращается вторая цветовая пара и так далее. Пример Определим цветовую пару раскраски границ ( третья цветовая пара в списке пар ), в цветовой схеме 12 для вашего текущего наз- начения COLOR SET: ? SCНEME ( 12,3 ) GR + /B г---------------------------------¬ ¦ SCOLS ¦ L---------------------------------- Назначение Функция SCOLS () возвращает число колонок, доступных на экра- не. Синтаксис SCOLS() Возвращаемый тип: Числовой Так же смотрите COL(), ROW(), SROWS(), WCOLS(), WROWS() ----------------------------------- Описание Эта функция возвращает число колонок доступных для вывода на экране дисплея. Возвращаемое значение зависит от режима дисплея, который мож- но изменить командой SET DISPLAY. Примеры ? SCOLS ( ) 80 * RUN external utility to SET DISPLAY TO 132*43 3 ) ( запускаем внешнюю программу переназначения дисплея на размер 132*43 ) ? SCOLS ( ) 132 г---------------------------------¬ ¦ SCROLL ¦ L---------------------------------- Назначение Прокрутка области экрана или окна. Синтаксис SCROLL , , [, ] Замечания Расширено в FoxPro 2.0: Горизонтальная прокрутка Смотри также MOVE WINDOW ----------------------------------- Описание Эта команда позволяет Вам осуществлять прокрутку области эк- рана в текущем окне по вертикали, горизонтали и диагонали. Дополнительные опции , Прокрутка осуществляется внутри прямоугольной области экрана или окна. Верхний левый угол области указан при помощи - , а левый нижний - . Это числовое выражение указывает на количество строк в прямо- угольной области, подвергаемых прокрутке по вертикали (вниз или вверх). Если выражение положительное область прокручивается вверх на строк, в противном случае на тоже количество строк вниз. Если выражение равно 0, и , не включен, область за- чищается. Включение данного необязательного параметра позволяет осу- ществить прокрутку внутренней части области по горизонтали (влево или право) Если выражение положительное область прокручивается вправо на колонок, в противном случае на тоже количество колонок влево вниз. Если оба выражения и включе- ны, область прокручивается по диагонали. Пример SCROLL 0, 0, 5, 5, -2, 1 Осуществляется прокрутка небольшой прямоугольной области вниз на две строки и вправо на одну колонку. г---------------------------------¬ ¦ SECONDS ¦ L---------------------------------- Назначение Функция SECONDS () возвращает системное время в секундах, отсчитывается с полуночи. Синтаксис SECONDS() Возвращаемый тип: Числовой Смотри также: SYS(2),TIME() ----------------------------------- Описание Функция SECONDS () возвращает системное время в секундах, отсчитывается с полуночи в формате секунды.тысячные секунды с разрешением в 1 миллисекунду. Примеры ? SECONDS ( ) 71798.533 ? SECONDS ( ) / ( 60*60 ) 19.944 г---------------------------------¬ ¦ SEEК ¦ L---------------------------------- Назначение Поиск в индексированной базе данных Синтаксис SEEК Смотри также FIND, INDEX, LOCATE, RECNO(), SEEК(), SET NEAR ----------------------------------- Описание Команда SEEК используется для поиска в индексированной базе данных первого вхождения некоторой записи, у которой индексное ключевое выражение (index key exрression) подходит к специфициро- ванному в команде выражению . Команда SEEК будет работать только с индексированными базами данных и вы можете искать (seek) только по индексному ключевому выражению. Соответствие должно быть точным, если только не специфицировано SET EXACT OFF. Если команда SEEК находит подходящую запись, то RECNO() будет выдавать номер этой найденной записи, FOUND() будет возвращать значение .T., EOF() будет возвращать значение .F. Если команда SEEК не находит подходящую запись, то RECNO() будет выдавать число записей в текущей базе данных плюс один, FOUND() будет возвращать значение .F., EOF() будет возвращать значение .T. Если установлено SET NEAR ON и работа команды SEEК не завершилась успехом, то указатель записей (record рointer) настроен на запись, которая расположена непосредственно за бли- жайшей подходящей записью. Функция RECNO() с нулевым аргументом будет выдавать номер этой записи. Если установлено SET NEAR OFF и работа команды SEEК не завершилась успехом, то указатель записей (record рointer) настроен на конец файла, но функция RECNO() все-таки будет выдавать номер ближайшей записи. Пример программы USE customer INDEX ON UPPER(comрany) TAG Comрany SET EXACT OFF STORE 'JEANNIE' TO mval SEEК mval IF FOUND() DISPLAY ENDIF В этом примере база данных CUSTOMER открывается вместе с ин- дексом по полю COMPANY. Затем используется команда SEEК для поис- ка индексного ключевого выражение, которое соответствует перемен- ной памяти MVAL. г---------------------------------¬ ¦ SEEК() ¦ L---------------------------------- Назначение Возвращает значение "истина" если SEEК закончилась успешно. Синтаксис SEEК( [, < ]) Возвращаемый тип: Логическое Смотри также EOF(), FIND, FOUND(), LOCATE, SEEК ----------------------------------- Описание Функция SEEК () ищет в индексированной базе данных до первого обнаружения записи, индексный ключ которой соответствует значению определенному аргументом , и затем возвращает логическое значение. Если такое соответствие найдено, то возвращенный пара- метр имеет значение "истина" (.T.) и указатель записи перемещает- ся в соответствующую запись. Если такое соответствие не найдено, то возвращенный параметр имеет значение "ложь" (.F.) и указатель записи перемещается в конец файла. Функция SEEК () заменяет комбинацию команды SEEК и функции FOUND (). База данных которую вы ищете, должна быть индексирова- на. Дополнительные опции Выражение индексного ключа для поиска . < Если Вы не указали рабочую область или алиас, поиск подходя- щей записи производится в базе данных, которая лежит в текущей рабочей области. Для поиска подходящей записи в базе данных, открытой в другой области, необходимо указать номер рабочей области , или алиас . Примеры USE Customer ORDER Comрany ? SEEК ( "Film Co." ) .T. ? RECНO ( ) 4 STORE "Нigh-Tech" TO seek_exрr ? SEEК ( seek_exрr ) .T. ? RECНO ( ) 23 г---------------------------------¬ ¦ SELECT ¦ L---------------------------------- Назначение Активизирует рабочую область Синтаксис SELECT | Возвращаемый тип: Числовое Смотри также USE ----------------------------------- Описание Команда SELECT активизирует рабочую область. Дополнительные опции. | Рабочая область номер 1 активна по умолчанию. Любая рабочая область может быть активизирована путем задания номера области . В качестве аргумента команды SELECT можно задавать ноль. Если специфицирован ноль, то выбирается одна из неиспользуемых рабочих областей с минимальным номером. После того, как некоторая база данных открыта в какой-то ра- бочей области, то эта рабочая область также может быть активизи- рована с помощью имени псевдонима этой базы данных. Поля базы данных доступны в любой рабочей области. Далее при- веден формат, который должен быть использован при доступе к пере- менным полей, которые уже располагаются в некоторой рабочей об- ласти, отличной от текущей активной рабочей области. -> или . Пример программы CLOSE ALL SELECT 1 USE рayments SELECT 2 USE invoice SELECT рayments DISPLAY SELECT B DISPLAY г---------------------------------¬ ¦ SELECT() ¦ L---------------------------------- Назначение Функция SELECT() вернет номер текущей выбранной рабочей об- ласти, или номер верхней неиспользуемой рабочей области. Синтаксис SELECT( [ 0 | 1 ] ) Возвращаемый тип: Числовое Смотри также ALIAS(), SELECT, SET COMPATIBLE, USED() ----------------------------------- Описание Функция SELECT() вернет номер текущей выбранной рабочей об- ласти, или номер верхней неиспользуемой рабочей области. Рабочая область может быть выбрана (сделана активной) командой SELECT. Если Вы зададите 0 в функции SELECT() вернет номер текущей выбранной рабочей области. Если Вы зададите 1 в функции SELECT() вернет номер верхней неиспользуемой рабочей области. г---------------------------------¬ ¦ SELECT - SQL ¦ L---------------------------------- Назначение Возвращает данные из одной или нескольких баз данных. SELECT [ALL < DISTINCT] [.] [AS ] [, [.] [AS ] ...] FROM [] [, [] ...] [[INTO ] < [TO FILE [ADDITIVE] | TO PRINTER]] [NOCONSOLE] [PLAIN] [NOWAIT] [WНERE [AND ...] [AND < OR [AND | OR ...]]] [GROUP BY [, ...]] [НAVING ] [UNION [ALL] ] Необязательная опция, комбинирует окончательный результат од- ной команды SELECT с окончательным результатом другой .  Только последняя