Вы можете добавлять и уалять записи во время, когда разрешено буфферирования таблиц: добавляемые записи помещаются в конец буффера. Для доступа ко все записям в буффере, включая добавленные записи, используйте функцию RECNO(). Функция RECNO() возвратит последовательные отрицательные номера записей, добавленных вами в табличный буффер. Например, если вы инициируете буфферизацию таблицы, редактировали записи 7, 8 и 9, а затем добавили три записи, буффер будет содержать значения RECNO( ): 7, 8, 9, – 1, – 2 и – 3.

NoteЗамечание

Таблицы, содержащие поля с автоувеличением значение, добавляют записи в буфферированную таблицу примерно на 35% медленнее, чем в таблицу без таких полей, что может оказать существенное влияние на производительность приложения. При использовании буфферизации таблицы, при добавлении записей заголовок таблицы блокируется.

Буффер после редактирования и добавления записей

EditedTableBuffer2 graphic foxpro

Вы можете добавленные записи из буффера только с помощью функции TABLEREVERT(). Для любой добавленной записи обе функции и TABLEUPDATE(), и TABLEREVERT() удаляют отрицательное значение RECNO(), для записи, которая формирует последовательность.

Буффер после редактирования, удаления добавленной записи и добавления другой

EditedTableBuffer graphic foxpro

Пока используется буфферизация таблицы, вы можете использовать команду GO с негативным значением RECNO( ) для обращения к конкретной добавленной записи. Например, используя предыдущую таблицу вы можете печатать команды:

  CopyCode imageСкопировать код
GO 7      && moves to the 1st buffered record
GO -3      && moves to the 6th buffered record (3rd appended)

Для добавления записи в буффер таблицы

  • Используйте команду APPEND или APPEND BLANK после того, как вы разрешите буфферизацию таблицы.

Добавленные записи имеет последовательно возрастающие отрицательные номера RECNO().

Для удаления добавленной записи из буффера таблицы

  1. Используйте команду GO | GOTO с отрицательным номером для позиционирования указателя записи на запись, которая будт удалена.

  2. Используйте команду DELETE для маркировки записи на удаление.

  3. Используйте функцию TABLEREVERT() для удаления записи из буффера.

    NoteЗамечание

    Функция TABLEREVERT() воздействует, кроме того, на статус удаленных и измененных строк.

Для удаления все добавленных записей из буффера таблицы

  • Используйте функцию TABLEREVERT() со значением True (.T.).

TABLEREVERT() удаляет добавленные записи из фуффера таблицы без записи записей в таблицу. TABLEUPDATE() записывает все текущие буфферированные записи в таблицу, даже если они были маркированы для удаления.

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