Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

15.6.3. Добавление записей

Команда

APPEND [BLANK] [IN nWorkArea | cTableAlias] [NOMENU]

добавляет одну или более записей в конец таблицы. Если при выполнении команды указанная таблица не открыта, то появится Open-диалог.

APPEND без опции BLANK открывает Edit-окно, что позволяет интерактивно добавить записи.

Открытые при выполнении команды индексы автоматически обновляются.

Опции:

BLANK – обеспечивает добавление одной чистой записи в конец таблицы. При употреблении опции Edit-окно не открывается. Применяется для программного добавления записей.

IN nWorkArea | cTableAlias – описана в табл. 1.7. Если задана и если используется команда APPEND, то таблица, указанная опцией, автоматически выбирается, если же употребляется команда APPEND BLANK, то запись добавляется в указанную опцией таблицу, но таблица не выбирается (сохраняется существующий выбор).

NOMENU – вызывает удаление меню Table, препятствуя тем самым интерактивному изменению параметров Edit-окна.

Замечание. Команда APPEND BLANK неприменима при работе с таблицей Authors, поскольку при добавлении записи выполняется проверка записи AuthorId > 0, и эта проверка завершается с отрицательным результатом (при выполнении APPEND BLANK AuthorId = 0).

Пример 1. В таблицу NewBooks с полями BookId типа I(4), Book типа C(50) и Price типа N(10, 2) добавляется чистая запись и производится заполнение ее полей. Таблица NewBooks индексированна по полю BookId. Тип индекса – первичный.

Поскольку в поле BookId значения должны быть уникальны, а при выполнении APPEND BLANK добавляется запись с BookId = 0, то необходимо проверить, есть ли запись с BookId = 0. Если да, то выполнение APPEND BLANK приведет к ошибке.

При вычислении нового значения NewBookId необходимо учитывать и записи, имеющие пометку удаления. Поэтому SET DELETED устанавливается в OFF. Если этого не сделать, то может возникнуть неуникальность BookId.

&& Проверяем, открыта ли таблица NewBooks

if not Used("NewBooks") then

MessageBox("Нужно открыть таблицу NewBooks!")

return

endif

&& При вычислении newBookId нужно учитывать записи,

&& имеющие пометку удаления

set deleted off

select NewBooks

&& Проверяем, есть ли запись с BookId = 0

set order to BookId

if Seek(0) then

MessageBox("Не могу продолжить. Есть запись с BookId = 0!")

return

endif

&& Вычисляем очередное значение кода книги

calculate Max(BookId) to newBookId

newBookId = newBookId + 1

append blank && Добавляем чистую запись

&& Заполняем поля записи

replace BookId with newBookId ;

Book with "Новая книга" ;

Price with 200

&& Просмотр добавленной записи

browse for BookId = newBookId

Пример 2. В таблицу Books, имеющую поле BookId типа Integer (AutoInc), добавляется чистая запись и производится заполнение ее полей. Значение autoinc-поля определяется автоматически.

select Books

append blank && Добавляем чистую запись

&& Заполняем поля записи

replace Book with "Новая книга" ;

Price with 200 ;

Pdate with Date( )

browse last && Просмотр результата

Команда

APPEND FROM ARRAY ArrayName [FOR lExpression] [FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]

добавляет записи в текущую таблицу в количестве, равном числу строк в массиве ArrayName, заполняя поля записи данными соответствующей строки массива: значение первого элемента строки массива устанавливается в первое поле записи или списка FIELDS, второго – во втрое и т. д. Одномерный массив рассматривается как двумерный с одной строкой.

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

Таблица 15.5

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]