Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция по Ms Access.doc
Скачиваний:
92
Добавлен:
19.05.2015
Размер:
1.86 Mб
Скачать

Создание объекта Recordset

Объект Recordset подчинён объекту Database, поэтому сначала открывается объект Database.

Перед этим необходимо объявить объектные переменные типа Database, Recordset.

Dim basa as Database, nabor as Recordset

В общем случае можно работать с несколькими базами данных одновременно. Их только нужно открыть.

Set basa=Opendatabase(“ Путь_к_базе_данных”)

Путь_к_базе_данных задаётся строкой.

Если таблица или запрос находятся в текущей базе данных, то её открытие будет выглядеть следующим образом:

Set basa=CurrentDb

База данных имеет метод открытия набора записей.

Set nabor=basa.OpenRecordset(“имя_таблицы или запроса”[, тип_работы])

Первый параметр задаётся строковой переменной, второй параметр необязательный и он означает, какие операции в этом наборе можно производить.

Предусмотрены следующие режимы работы:

DbOpenTable-записи можно добавлять, изменять, редактировать.

DbOpenDynaset - для запросов, допускает любые операции.

DbOpenSnapshot -запрещает вставку, удаление, исправление, но позволяет переход к записям в произвольном порядке.

DbOpenForwardOnly - разрешает последовательный доступ от первой к последней записи.

Если тип не указан. по умолчанию для таблиц берётся первый, для запросов – второй.

Пример:

Организовать ввод данных в таблицу “Товары” через форму, созданную пользователем.

1.В конструкторе таблиц создали структуру таблицы, но не заполняем её.

2. В конструкторе форм создаём форму с 4 текстовыми полями и кнопкой.

3.В свойствах полей на вкладке «Другие» задаём имена и подписи полям, соответствующие именам полей в таблице.

4.По событию «Нажатие кнопки» пишем процедуру:

Форма будет выглядеть

следующим образом:

Текст процедуры:

Private Sub Кнопка4_Click()

Dim basa As Database, nabor As Recordset ‘ Объявление переменных basa, nabor типа

Database,Recordset

Set basa = CurrentDb ‘ Работаем в текущей базе данных

Set nabor = basa.OpenRecordset("Товары", dbOpenTable) ‘ Открываем набор в режиме

таблицы

With nabor

.AddNew ‘ Добавляет в таблицу пустую запись

.Fields!Товар = Товар.Value ‘ Значению полю в таблице присваивается

.Fields!Цена = Цена.Value ‘ значение текстового поля в форме

.Fields!Поставщик = Поставщик.Value ‘ тоже

.Fields!Дата_поставки = Дата_поставки.Value ‘ тоже

.Update ‘ Обновляет таблицу

.Close ‘ Закрывает набор

End With

End Sub

Пример:

Отредактировать в таблице “Товары” последнюю запись.

Таблица до выполнения программы состояла из записей

  1. Создадим в конструкторе форму “Редактор” на основе таблицы «Товары»:

  1. В поля формы введём новые значения для последней записи.

  2. По событию «Нажатие кнопки» пишем программный код.

Private Sub Кнопка8_Click()

Dim basa As Database, nabor As Recordset

Set basa = CurrentDb

Set nabor = basa.OpenRecordset("Товары", dbOpenTable)

With nabor

.MoveLast ' Устанавливает указатель файла на последнюю запись

.Edit ' Вызывает метод редактирования

.Fields!Товар = Товар.Value

.Fields!Цена = Цена.Value

.Fields!Поставщик = Поставщик.Value

.Fields!Дата_поставки = Дата_поставки.Value

.Update

.Close

End With

End Sub

После нажатия кнопки «Редактор» таблица будет выглядеть следующим образом:

2-й способ решения этой задачи:

  1. Создать форму на основе таблицы «Товары».

Для этого на вкладке ФОРМЫ нажать кнопку СОЗДАТЬ, в появившемся окне диалога выбрать в качестве источника данных таблицу «Товары».

(Рисунок выше)

2.Нажать ОК.

Перетащить мышью каждое поле из списка

в область данных формы.

Текстовым полям формы автоматически даются имена и подписи, соответствующие именам полей в таблице.

Установить кнопку с подписью «РЕДАКТОР» и по её нажатию написать программу:

Private Sub Кнопка4_Click()

Dim frm As Form

Set frm = Forms!Редактор

Frm. Requery ‘ Метод обновления источника данных

End Sub

Здесь можно редактировать любую запись в таблице «Товары».

Установить номер нужной записи, используя линии прокрутки в поле Запись, ввести новые значения и нажать кнопку «РЕДАКТОР». Обновление в таблице «Товары» произойдёт.

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

Пример:

Получить из таблицы “Товары” список товаров, у которых цена больше заданной.

Создадим форму вида:

  1. В поле “Заданная цена ” вводим значение заданной цены.

  2. По нажатию кнопки “Выборка ” будет появляться системное окно MsgBox c названием “Выборка”, с кнопками «Да», «Нет». При ответе «Да» из таблицы в текстовые поля данной формы будут выводиться значения.

  1. Текст программы:

Private Sub Кнопка8_Click()

Dim basa As Database, nabor As Recordset, zena1 As Currency

Set basa = CurrentDb

zena1 = Заданная_цена.Value

Переменной zena1 присваивается значение из текстового

поля с именем «Заданная_цена»

Set nabor = basa.OpenRecordset("Товары", dbOpenTable)

With nabor

Do Until.EOF ‘ Пока не достигнут конец файла

If MsgBox("Продолжать выборку?", vbYesNo, "ВЫБОРКА") = vbYes Then

If.Fields!Цена > zena1 Then

Товар.Value =.Fields!Товар ‘Вывод значений из таблицы в поля формы

Цена.Value =.Fields!Цена

Поставщик.Value =.Fields!Поставщик

Дата_поставки.Value =.Fields!Дата_поставки

End If

.MoveNext ‘Переход к следующей записи

Else

Exit Do ‘ Преждевременный выход из цикла

End If

Loop

.Close ' Закрывает набор

End With

End Sub