Добавляет одну запись в выбранную в данный момент таблицу для каждой строки массива и заполняет каждую запись данными из соответствующей строки массива.
Синтаксис:
APPEND FROM ARRAY ArrayName [FOR lExpression] [FIELDS FieldList]
Параметры:
ArrayName
Задает имя массива, содержащего данные, которые следует копировать в новые записи. Новые записи добавляются в таблицу до тех пор, пока не будут добавлены все строки массива.
Одномерные массивы
Если массив одномерный, команда APPEND FROM ARRAY добавляет в таблицу одну запись. Содержимое первого элемента массива заносится в первое поле вновь добавленной записи, содержимое второго элемента массива ѕ во второе поле записи и т.д.
Если в одномерном массиве больше элементов, чем полей в таблице, лишние элементы игнорируются. Если в таблице больше полей, чем элементов в массиве, лишние поля инициализируются "пустыми" значениями, принимаемыми по умолчанию. Ниже приведены такие значения для каждого типа поля:
Тип поля Значение по умолчанию Character Пробелы Numeric 0 Currency 0 Float 0 Integer 0 Double 0 Date Пустая дата (CTOD('')) DateTime Пустая дата.время ( CTOT('')) Logical Пусто (/ /) Memo Пусто (нет содержимого)
Двумерные массивы
Если в команде участвует двумерный массив, новая запись добавляется к таблице для каждой строки массива. Например, если в массиве четыре строки, к таблице будут присоединены четыре новые записи.
Содержимое первого столбца массива заносится в первые поля вновь добавленных записей, содержимое второго столбца во вторые поля новых записей и т.д. Например, если массив состоит из четырех строк и трех столбцов, элементы первого столбца заполнят первые поля каждой из четырех новых записей, присоединенных к таблице.
Если в двумерном массиве больше столбцов, чем полей в таблице, лишние столбцы игнорируются. Если в таблице больше полей, чем столбцов в массиве, лишние поля инициализируются "пустыми" значениями (см. выше).
FOR lExpression
Задает условие добавления записей из массива. Выражение lExpression должно содержать имя поля назначения в его условном выражении.
Перед добавлением строки массива к записи в таблице проверяется элемент массива, который соответствует полю назначения, заданному выражением lExpression. Если элемент массива удовлетворяет условию lExpression, запись добавляется.
Если элемент массива не удовлетворяет этому условию, строка массива не добавляется и проверяется следующая строка массива удовлетворяет она условию или нет.
FIELDS FieldList
Указывает, что обновлять данными из массива следует только поля, приведенные в списке FieldList. Первое поле в списке обновляется содержимым первого элемента массива, второе поле содержимым второго элемента и т.д.
Несоответствие типов данных
Команда APPEND FROM ARRAY может заполнить поле даже в том случае, если тип данных соответствующего элемента массива не совпадает с типом данных поля, но при условии, что данные элемента совместимы с типом данных этого поля. Если данные несовместимы, поле инициализируется пустым значением.
Комментарии:
Memo-поля и поля типа General игнорируются командой APPEND FROM ARRAY. Когда таблица открыта для совместного использования, команда APPEND FROM ARRAY блокирует заголовок таблицы на время добавления записей.
Пример:
* Данный пример иллюстрирует процесс добавления записи в таблицу * Открывается таблица customer, и команда SCATTER создает массив * gaCustArray, содержащий пустой элемент для каждого поля в таблице. * Цикл FOR ... ENDFOR отображает каждое поле на экране. Команда READ * активизирует команды @ ... GET. * Если редактирование не будет прекращено клавишей Esc, команда * APPEND FROM ARRAY присоединит к таблице новую запись. После этого * данные из массива переменных памяти gaCustArray заменят * содержимое каждого поля. SET TALK OFF CLEAR CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE customer && Open customer table SCATTER TO gaCustArray BLANK && Create a blank array FOR gnCount = 1 TO ALEN(gaCustArray) && Number of rows in array @ gnCount, 2 SAY FIELD(gnCount); GET gaCustArray(gnCount) && Display fields and get info ENDFOR READ IF READKEY( ) != 12 && If ESC isn't pressed APPEND FROM ARRAY gaCustArray && Append a record, fill from array GOTO BOTTOM BROWSE DELETE PACK ENDIF USE CLEAR