- •Программирование в среде Microsoft Office 2000
- •1. Основные сведения о vba
- •1.2. Макрорекордер в Office 2000
- •2.Основные сведения о программировании на vba
- •2.1. Алфавит и лексика языка vba
- •2.2.Правила записи текста программы на vba.
- •2.4. Данные в vba
- •2.4.1. Типы данных в vba
- •Т ипы данных в vba
- •Встроенные типы данных показаны в таблице 2.1.
- •2.4.2.Объявление переменных и констант простых типов
- •2.4.3. Массивы
- •2.5.Использование стандартных диалоговых окон для организации ввода-вывода данных
- •2.5.1.Функция MsgBox
- •2.5.2.Функция InputBox
- •2.6. Управляющие конструкции vba
- •2.6.1.Условный оператор if
- •2.6.2.Оператор выбора Select Case
- •2.6.3.Оператор цикла For … Next
- •2.6.4.Оператор цикла While…Wend
- •2.6.5.Оператор цикла Do…Loop
- •2.6.6. Оператор перехода GoTo
- •2.7. Основные сведения об объектах
- •2.7.1.Основные понятия объектно-ориентированного программирования.
- •2.7.2. Особенности использования объектов.
- •2.7.3. Коллекции в vba
- •2.7.4. Объект Application
- •2.7.5. Объекты Range и Selection
- •2.7.6. Оператор With для операций с одним объектом.
- •2.8.Обработка ошибок
- •3.Программирование в приложениях ms Office 2000.
- •3.1.Объекты excel, их свойства и методы.
- •3.1.1. Объектная модель excel
- •3.1.2. Коллекция Workbooks
- •3.1.3. Объект Workbook
- •3.1.4.Объект Worksheet
- •3.1.5.Объект Chart
- •3.1.6.Объекты Range и Selection
- •3.1.7. Пример решения задачи в excel на основе построения vba-кода.
- •3.2. Объекты word, их свойства и методы.
- •3.2.1. Модель объектов word
- •3.2.2.Объект Appication
- •3.2.3. Объект Document
- •3.2.4. Классы, задающие структуризацию текста документа.
- •3.2.5. Классы, составляющие части документа
- •3.2.5.1. Объект Range
- •3.2.5.2. Объект Selection
- •3.2.6. Классы, представляющие структуру документа
- •3.3. Автоматизация работы в Access на основе использования Access vba
- •3.3.1. Средства автоматизации работы в Access.
- •3.3.2. Объектная модель Microsoft Access
- •3.3.3.Особенности программирования в Access vba
- •3.3.3.1. Модель программирования Access
- •3.3.3.2. Особенности работы с объектами в Access vba.
- •3.3.4. Манипулирование в Access объектами Application
- •3.3.5. Объекты доступа к данным
- •3.3.5.1. Объекты dao
- •3.3.5.2. Объекты ado
- •3.3.6. Использование объектов доступа к данным в Access
- •3.3.6.1. Соединение с текущей базой данных
- •3.3.6.2. Открытие базы данных
- •3.3.6.3. Создание базы данных
- •3.3.6.4. Выполнение операций с записями
- •3.3.6.5. Перемещение по набору записей
- •3.3.6.6. Поиск записей в объектах Recordset
- •3.3.7. Пример решения задачи в Access на основе построения vba-кода
- •3.4.Совместная работа приложений Microsoft Office 2000
- •4.Список рекомендуемой литературы
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
Добавление записи и сохранение изменений состоит из следующей последовательности действий:
Создание новой записи в буфере копий и присваивание ей значений по умолчанию использованием метода AddNew:
набор_записей.AddNew
Все поля добавленной записи получают значение Null или значение по умолчанию, определенное пользователем.
Ввод новых данных (внесение изменений в поля, значения которым были присвоены по умолчанию)
Сохранение изменений в буфере копии и добавление сохраненной записи в набор использованием метода Update:
набор_записей.Update
Текущая запись после применения метода AddNew не меняется.
Позиция новой записи в наборе зависит от его типа. Если не установлена характеристика Index, запись, добавляемая к набору табличного типа, присоединяется к концу набора. Если задан индекс, новая запись в соответствующей позиции вставляется в порядке сортировки индекса. При добавлении записи к набору динамического типа запись включается в конец набора.
ADO
При выполнении аналогичных измепнений в объекте Recordset ADO, инструкция, вызывающая метод Update, может быть опущена.
Это связано с тем, что в модели ADO все изменения автоматически сохраняются в базе при переходе к новой записи и без применения этого метода. Если нужно перейти к новой записи, не сохраняя сделанные в записи изменения, следует использовать метод CancelUpdate.
Изменение существующей записи
DAO
Процесс редактирования текущей записи и сохранения изменений включает в себя следующую последовательность действий:
Помещение копии текущей записи в буфер копии использованием метода Edit:
набор_записей.Edit
Внесение изменений
Сохранение изменений, зафиксированных в буфере копии текущей записи использованием метода Update:
набор_записей.Update
ADO
В объектной модели ADO методы Edit и Update могут быть опущены. Можно просто изменить значения полей в текущей записи.
Удаление существующей записи
В объектных моделях DAO и ADO процесс удаления текущей записи объекта RecordSet реализуется одинаково и состоит в использовании метода Delete:
набор_записей.Delete
Отменить удаление нельзя, так как никакого буфера для хранения содержимого не предусматривается. Удаленная запись продолжает оставаться текущей, хотя на нее нельзя ссылаться. Чтобы перейти к следующей записи, нужно выполнить метод MoveNext.