Копирует данные в массив из таблицы, выбранной в данный момент.

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 для ускорения доступа к данным.

Expand imageЗамечания

Технология 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, используйте следующее:

  CopyCode imageCopy Code
COPY TO ARRAY aMyArray FIELDS LIKE A*,P*

Предложение LIKE может использоваться в комбинации с предложением EXCEPT:

  CopyCode imageCopy Code
COPY TO ARRAY aMyArray FIELDS LIKE A*,P* EXCEPT PARTNO*

Включение автоувеличения (autoincrement) не имеет никакого эффекта на команду COPY TO ARRAY. Только значения записей копируются в масив.

Expand imageПример

В следующем примере открывается таблица, Customer. Затем создается двумерный массив, в него копируются первые три записи таблицы Customer. DISPLAY MEMORY показывает данные, сохраненные в массиве.

  CopyCode imageCopy 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

Expand imageСмотрите также