Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MVBA_2000.DOC
Скачиваний:
13
Добавлен:
08.11.2019
Размер:
599.55 Кб
Скачать

3.3.6.5. Перемещение по набору записей

При создании объекта Recordset в буфере размещаются строки данных. Строки выбираются поочередно, и указываемая строка называется текущей записью. Текущая запись - это единственная запись, доступная для модификации или извлечения из нее данных. При открытии объекта Recordset текущей будет первая запись набора (при наличии в нем записей). Работа с записями в моделях DAO и ADO выполняется аналогично.

Перемещение по набору данных позволяет переходить от одной записи к другой согласно их положению в наборе. Для этого применяются методы Move..., дублирующие действие навигационных кнопок интерактивного режима Access.

Методы MoveFirst, MoveLast, MoveNext или MovePrevios перемещают текущую позицию к первой, последней, следующей или предыдущей записи заданного объекта Recordset. Для вызова методов Move...используется следующий синтаксис:

набор_записей.{MoveFirst | MoveLast | MoveNext | MovePrevios}

где набор_записей - ссылка на открытый объект Recordset.

Для перемещения на заданное число записей вызывается метод Move.

набор_записей.Move строки[, начало]

где:

строки – число типа Long со знаком, указывающее число строк, на которое перемещается указатель текущей записи.

начало – по умолчанию – текущая запись.

Для определения положения указателя текущей записи используются булевы свойства (характеристики) BOF и EOF, возвращающие True, если указатель текущей записи находится перед первой записью или после последней записи объекта Recordset.

Особенность редактирования записи состоит в том, что вносимые изменения не применяются к ней непосредственно. Запись копируется в область памяти - буфер копии, создаваемый Jet для редактирования.

Число записей в наборе определяется с помощью его характеристики RecordCount. Возвращаемое данной характеристикой значение зависит от типа набора записей. для наборов записей табличного типа характеристика RecordCount дает общее число записей в таблице:

набор_записей.RecordCount

Для наборов динамического типа эта характеристика не возвращает общего числа записей. Для этого надо обратиться ко всем записям:

набор_записей.MoveLast

переменная=набор_записей.RecordCount

Изменение данных в объекте Recordset

В каждый момент операции разрешаются только с текущей записью. Это означает, что перед редактированием текущей записи нужно переместить к ней указатель. Jet использует для хранения содержимого редактируемой записи специальную область памяти - буфер копии.

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

DAO

Добавление записи и сохранение изменений состоит из следующей последовательности действий:

  1. Создание новой записи в буфере копий и присваивание ей значений по умолчанию использованием метода AddNew:

набор_записей.AddNew

Все поля добавленной записи получают значение Null или значение по умолчанию, определенное пользователем.

  1. Ввод новых данных (внесение изменений в поля, значения которым были присвоены по умолчанию)

  2. Сохранение изменений в буфере копии и добавление сохраненной записи в набор использованием метода Update:

набор_записей.Update

Текущая запись после применения метода AddNew не меняется.

Позиция новой записи в наборе зависит от его типа. Если не установлена характеристика Index, запись, добавляемая к набору табличного типа, присоединяется к концу набора. Если задан индекс, новая запись в соответствующей позиции вставляется в порядке сортировки индекса. При добавлении записи к набору динамического типа запись включается в конец набора.

ADO

При выполнении аналогичных измепнений в объекте Recordset ADO, инструкция, вызывающая метод Update, может быть опущена.

Это связано с тем, что в модели ADO все изменения автоматически сохраняются в базе при переходе к новой записи и без применения этого метода. Если нужно перейти к новой записи, не сохраняя сделанные в записи изменения, следует использовать метод CancelUpdate.

Изменение существующей записи

DAO

Процесс редактирования текущей записи и сохранения изменений включает в себя следующую последовательность действий:

  1. Помещение копии текущей записи в буфер копии использованием метода Edit:

набор_записей.Edit

  1. Внесение изменений

  2. Сохранение изменений, зафиксированных в буфере копии текущей записи использованием метода Update:

набор_записей.Update

ADO

В объектной модели ADO методы Edit и Update могут быть опущены. Можно просто изменить значения полей в текущей записи.

Удаление существующей записи

В объектных моделях DAO и ADO процесс удаления текущей записи объекта RecordSet реализуется одинаково и состоит в использовании метода Delete:

набор_записей.Delete

Отменить удаление нельзя, так как никакого буфера для хранения содержимого не предусматривается. Удаленная запись продолжает оставаться текущей, хотя на нее нельзя ссылаться. Чтобы перейти к следующей записи, нужно выполнить метод MoveNext.

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