Если база данных существует, то ее достаточно открыть прямо из приложения. Сделать это можно методом OpenDatabase объекта Workspace
Синтаксис:
Set database= DBEngine.Opendatabase (Name, Options, ReadOnly, Connect)
Здесь:
database- объектная переменная, представляющая создаваемый объект Database
Name-Строковое выражение, задающее имя существующего файла базы данных (обязательный параметр)
Options-различные опции доступа (необязательный параметр)
ReadOnly- (необязательный параметр) допустимые значения:
True (база данных открывается только для чтения)
False (по умолчанию, база данных открывается как для чтения так и для записи)
Connect-Дополнительный параметр, содержащий сведения о подключении, в том числе и пароли (необязательный параметр)
Объект Recordset
После открытия базы данных можно создавать объект Recordset. Он представляет собой записи исходной таблицы базы данных или результирующий набор записей, возвращаемый в результате запроса. Позволяет управлять в базе данных на уровне записи. На уровне полей управление данными осуществляется объектом Field.
Для создания объекта Recordset необходимо создать объектную переменную типа Recordset при помощи метода OpenRecordset объекта DataBase.
Синтаксис:
Set recordset = Database. OpenRecordset (Source, Options)
Здесь:
recordset - объектная переменная, представляющая открываемый объект recordset
Source-строковое выражение, определяющее имя таблицы, с которым связывается объект recordset
(обязательный параметр)
Options-специфирует работу пользователя с объектом recordset. Допустимые значения:
dDbAppendOnly- пользователь может добавлять записи, но не редактировать уже существуюшие
dbReadOnly- запрещено вносит изменения в записи
В приложении допускается определение произвольного числа объектных переменных, представляющих объект recordset.Разные объекты recordset могут иметь доступ к одним таблицам.
|
При работе с объектами доступа к данным почти все операции выполняются с помощью объектов recordset.
Приведем наиболее часто используемые методы и свойства объекта recordset, позволяющие анализировать, редактировать записи базы данных.
Методы:
- AddNew- создает и добовляет новую запись. После внесения изменений в новую запись следует вызвать метод Update для сохранения изменений и добавления записи в объект recordset. До вызова метода Update изменения в базу данных не заносятся.
- Close- закрывает открытый объект доступа к данным
- Delete- удаляет текущую запись
- Edit –копирует текущую запись в буфер копирования для последующего изменения. После внесения изменений в новую запись следует вызвать метод Update для сохранения изменений и добавления записи в объект recordset.
- MoveFirst,MoveLast,MoveNext,MovePrevious-делают текущей первую, последнюю, следующую и предыдущую запись объекта recordset
- FindFirst, FindLast, FindNext, FindPrevious- находят первую, последнюю, следующую и предыдущую запись объекта recordset, удовлетворяющую условиям и делают эту запись текущей.
Синтаксис (на примере метода FindNext):
FindNext Criteria,
Где Criteria- это выражение или переменная типа String, используемая для поиска записи. Например FindNext “ Оценка>3 and предмет=”ИПС”
Свойства:
1.BOF –возвращает значение TRUE, если указатель текущей записи расположен перед первой записью набора,и значение False, если он расположен на первой записи набора или на любой записи после нее.
2. EOF- возвращает значение TRUE, если указатель текущей записи расположен после последней записи набора,и значение False, если он расположен на последней записи набора или на любой записи перед ней.
|
3.NoMatch- возвращает значение TRUE, если нужная запись не найдена и False – в противном случае
Объект Field
Этот объект представляет собой поля конкретной таблицы базы данных. Ссылка на него осуществляется через объект recordset. Важнейшее его свойство Value возвращает данные из конкретного поля таблицы.
Например:
Set ws=DBEngine.Workspaces(0)
Set db=ws.OpendataBase(“C:\S.mdb”)
Set rs =db. OpenRecordset (“Клиенты”)
rs.MoveFirst
rs.Fields(“Возраст).Value- возвращает данные, находящиеся на пересечении первой записи таблицы “Клиенты” и поля “ Возраст”
Порядок работы при объектном доступе к данным (предполагается, что база данных существует):
- Создать рабочую область или использовать стандартную рабочую область, как показано выше (Объект workspace)
- Открыть базу данных (объект Database)
- Создать набор записей (объект Recordset)
- Непосредственно работать с конкретными записями и полями
Задание 6
Рассмотрим работу с базой данных на примере простого приложения. Для этого в СУБД MS Access предварительно создадим базу данных, и сохраним эту базу данных в файле Example.MDB.
База данных имеет простейшую структуру и состоит из одной таблицы Первый курс, в которой имеется только четыре поля: Фамилия, Группа, Предмет и Оценка.
Рассмотрим действия программы:
- При активизации диалогового окна выводит в поля ввода информацию о первом студенте из таблицы.
- При нажатии кнопок “>” и “<” происходит перемещение на одну запись вперед и назад, соответственно, а при нажатии кнопок “>>” и “<<” перемещение в конец и в начало таблицы
- При нажатии кнопки Закрыть закрывается база данных и диалоговое окно.
Для создания этого приложения сконструируйте форму, на которой разместите 4 надписи, 4 поля ввода, 5 кнопок. Установите значения свойства Name полей ввода равными txtName, txtGroup, txtSubject и txtMark, кнопок - равными cmdFirst, cmdPrevious, cmdNext, cmdLast и cmdClose. В модуле формы наберите следующий код:
|
'Переменные уровня модуля
Private ws As Workspace
Private db As Database
Private rs As Recordset
Private Sub UserForm_Initialize()
' Создание рабочей области
Set ws = DBEngine.Workspaces(0)
' Открытие базы данных Example.MDB (предположим, что файл расположен в каталоге C:\WINDOWS\Рабочий стол\Example.mdb
Set db = ws.OpenDatabase("C:\WINDOWS\Рабочий стол\Example.mdb")
' Создание записей
Set rs = db.OpenRecordset("Первый курс")
' Вывод первой записи в поля диалогового окна
Showrecord
End Sub
Private Sub Showrecord()
' Вывод записи в поля диалогового окна
With rs
txtName.Text =.Fields("Фамилия").Value
txtGroup.Text =.Fields("Группа").Value
txtSubject.Text =.Fields("Предмет").Value
txtMark.Text =.Fields("Оценка").Value
End With
End Sub
Private Sub cmdFirst_Click()
' Переход к первой записи
rs.MoveFirst
Showrecord
End Sub
Private Sub cmdLast_Click()
' Переход к последней записи
rs.MoveLast
Showrecord
End Sub
Private Sub cmdPrevious_Click()
' Переход к предыдущей записи
rs.MovePrevious
If rs.BOF = True Then
rs.MoveFirst
MsgBox ("Первая запись")
End If
Showrecord
End Sub
Private Sub cmdNext_Click()
' Переход к следующей записи
rs.MoveNext
If rs.EOF = True Then
rs.MoveLast
MsgBox ("Последняя запись")
End If
Showrecord
End Sub
Private Sub cmdClose_Click()
' Закрытие записей, базы данных, рабочего пространства и окна
rs.Close
db.Close
ws.Close
Unload Me
End Sub