Копирует данные в массив из таблицы, выбранной в данный момент.
COPY TO ARRAY ArrayName [FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE] |
Параметры
- ArrayName
-
Задает массив, в который нужно скопировать данные из таблицы.
- FIELDS FieldList
-
Указывает, что в массив следует скопировать только поля, включенные в список FieldList. Если опустить предложение FIELDS FieldList, все поля будут скопированы в массив, если у него достаточно столбцов.
- FIELDS LIKE Skeleton
-
Указывает, что в масив копируются поля которые соответствуют шаблону Skeleton.
- FIELDS EXCEPT Skeleton
-
Указывает, что в масив копируются все поля кроме тех, которые соответствуют шаблону Skeleton.
- Scope
-
Задает диапазон записей, копируемых в массив. В копировании будут участвовать только записи указанного диапазона. Он может задаваться следующими предложениями: ALL, NEXT nRecords, RECORD nRecordNumber, и REST. Подробнее о предложениях диапазона смотрите тему Выражение Scope.
- FOR lExpression1
-
Задает копирование в масив только записей, удовлетворяющих логическому условию lExpression1. Предложение FOR позволяет выполнять условное копирование записей в массив, отфильтровывая ненужные записи.
- WHILE lExpression2
-
Задает условие, согласно которому записи будут копироваться в массив, пока логическое выражение lExpression2 остается истинным (.T.).
- NOOPTIMIZE
-
Блокирует оптимизацию выполнения команды COPY TO ARRAY по технологии Rushmore. Для получения дополнительной информации, смотрите Команда SET OPTIMIZE и Использование оптимизации запросов Rushmore для ускорения доступа к данным.
Замечания
Технология Rushmore допускает оптимизацию запроса COPY TO ARRAY с предложением FOR lExpression1, если lExpression1 является оптимизируемым выражением. Для повышения производительности рекомендуется пользоваться в предложении FOR оптимизируемым выражением. одробнее о выражениях, оптимизируемых по технологии Rushmore, смотрите Команда SET OPTIMIZE и Использование оптимизации запросов Rushmore для ускорения доступа к данным.
Команда COPY TO ARRAY аналогична команде SCATTER. COPY TO ARRAY копирует несколько записей в массив, а SCATTER - только одну запись в массив или в набор переменных памяти. Обе команды, COPY TO ARRAY и SCATTER , создают новый массив, если массива с заданным именем не существует.
Чтобы скопировать одну запись в массив, можно задать одномерный массив. В состав такого массива должно входить столько же элементов, сколько полей входит в таблицу, не считая memo-полей. Memo и Blob поля игнорируются командой COPY TO ARRAY.
Если вы задали одномерный массив, первое поле записи будет сохранено в первом элементе массива, второе поле - во втором элементе и т.д. Если в одномерном массиве оказалось больше элементов, чем полей в таблице, оставшиеся элементы не изменяются. Если в массиве меньше элементов, чем полей в таблице, лишние поля игнорируются.
Чтобы скопировать в массив несколько записей или всю таблицу целиком, задайте двумерный массив. Число строк в массиве - это число записей, которое массив может вместить, а число столбцов массива - это число полей, которое можно в него поместить.
Каждая запись сохраняется в одной строке массива, а каждое поле записи сохраняется в одном столбце массива. В каждой записи первое поле сохраняется в первом столбце массива, второе поле - во втором столбце и т.д. Если в массиве оказалось больше столбцов, чем полей в таблице, все оставшиеся столбцы не изменяются. Если в массиве меньше столбцов, чем полей в таблице, лишние поля не сохраняются в массиве.
Каждая последующая строка массива заполняется содержимым очередной записи таблицы. Если в массиве больше строк, чем записей в таблице, оставшиеся строки не изменяются. Если в массиве меньше строк, чем записей в таблице, лишние записи не сохраняются в массиве.
Содержимое массива можно скопировать в новые табличные записи командой APPEND FROM ARRAY. Кроме того, с помощью команды GATHER можно скопировать данные из массива или из набора переменных памяти в записи таблицы.
Шаблон Skeleton поддерживает групповые символы. Например, чтобы скопировать все поля, которые начинаются с символов A и P, используйте следующее:
Copy Code | |
---|---|
COPY TO ARRAY aMyArray FIELDS LIKE A*,P* |
Предложение LIKE может использоваться в комбинации с предложением EXCEPT:
Copy Code | |
---|---|
COPY TO ARRAY aMyArray FIELDS LIKE A*,P* EXCEPT PARTNO* |
Включение автоувеличения (autoincrement) не имеет никакого эффекта на команду COPY TO ARRAY. Только значения записей копируются в масив.
Пример
В следующем примере открывается таблица, Customer
. Затем создается двумерный массив, в него копируются первые три записи таблицы Customer
. DISPLAY MEMORY показывает данные, сохраненные в массиве.
Copy Code | |
---|---|
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'Data\testdata') USE Customer && Opens Customer table. DIMENSION gaTemp(3,10) COPY NEXT 3 TO ARRAY gaTemp DISPLAY MEMORY LIKE gaTemp |