|
||||||||||||||||||||||||||||||||||||||||||||||
Работа с базами данных с помощью DAO (Data Access Objects)
Время создания: 16.03.2019 23:43
Текстовые метки: VBA, Access, DAO
Раздел: Разные закладки - VBA - Access - DAO
Запись: xintrea/mytetra_db_adgaver_new/master/base/1513854371t2bjcckxdi/text.html на raw.githubusercontent.com
|
||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
VBNet - Статьи - Работа с базами данных с помощью DAO (Data Access Objects) Всё больше программ использует для хранения данных базы данных. Один из инструментов для работы с базами данных - библиотека DAO (Data Access Objects). О ней и пойдёт речь в этой статье. Выборка данных Как осуществить выборку данных? Сначала объявляем переменные. Dim db As DAO.Database 'Объявляем базу данных Открываем базу данных. Для этого вызываем метод OpenDatabase, и в качестве параметра передаём полный путь и имя файла базы данных. Обратите внимание, что db - это объект и поэтому пишем ключевое слово Set. Set db = DAO.OpenDatabase ("C:\db.mdb") Формируем строку SQL запроса. Допустим, нам нужно получить все поля таблицы Orders. sSQL = "SELECT * FROM Orders;" Теперь открываем рекордсет. Для этого вызываем метод OpenRecordset объекта db с первым параметром - SQL запросом. У этого объекта есть ещё 3 необязательных параметра.
Рекордсет открыт. Информация, выбранная из базы данных, находится в объекте rs. Теперь нам нужно достать оттуда данные. Для передвижения по записям в объекте типа RecordSet используется 5 методов:
Текущая запись находится в классе Fields. With rs Вместо Debug.Print естественно можно поставить и оператор присваивания (=)
Закрываем рекордсет и базу данных rs.Close В конце процедуры для того, чтобы освободить память пишем Set rs = Nothing
Добавление и изменение записей Для добавления и изменения записей используется похожая технология. Dim db As DAO.Database 'Объявляем базу данных Set db = DAO.OpenDatabase ("C:\db.mdb")
Для добавления записи используется метод AddNew объекта типа Recordset. rs.AddNew Теперь запись добавлена, и мы заполняем все поля для данной записи. rs.Fields (0) = "Значение 1" Обновляем рекордсет. rs.Update Закрываем рекордсет и базу данных и освобождаем память. rs.Close Код для изменения записи очень похож на предыдущий код. Для изменения записи используется метод Edit. Также нужно изменить SQL запрос и сделать его примерно таким:
Предполагается наличие поля ID, тип которого числовой и его значение уникально для каждой записи. В данном случае мы будем изменять запись значение поля ID которой равно 23. Dim db As DAO.Database 'Объявляем базу данных Set db = DAO.OpenDatabase ("C:\db.mdb") 'Открываем базу
rs.Edit 'Редактируем запись
Удаление записи Удаление записи можно произвести двумя путями. Первый путь - исполнение SQL запроса с командой DELETE. Идентифицировать запись будем по полю ID. Предполагается, что значения поля ID уникальны для каждой записи. Удаляем запись, ID которой равно 5. Dim db As DAO.Database 'Объявляем базу данных Set db = DAO.OpenDatabase ("C:\db.mdb") 'Открываем базу
Рекордсет открывать не нужно, так как нам не надо получать данные из базы. Для исполнения запроса мы используем метод Execute объекта типа Database. Он имеет 2 параметра. Первый параметр Query - строка исполняемого запроса. Второй необязательный параметр options - константа или комбинация констант, отражающая характеристики исполняемого запроса. db.Execute sSQL Второй способ удаления записи заключается в использовании метода Delete объекта типа Recordset. Этот метод удаляет текущую запись. Он не имеет параметров. rs.Delete
Количество записей и номер текущей записи Для определения количества записей в рекордсете используется свойство RecordCount объекта типа Recordset. Но есть небольшая неувязочка... Если рекордсет типа Dynaset, Snapshot или ForwardOnly, то свойство RecordCount покажет число записей, только при достижении последней записи. В этом случае нужно сразу переместиться к концу рекордсета. rs.MoveLast Номер текущей записи определяется с помощью свойства AbsolutePosition. Отсчёт начинается с нуля. Т.е. если текущая запись - первая, то AbsolutePosistion покажет 0. Если текущая запись находится до первой или после последней, то свойство AbsolutePosition покажет -1.
Debug.Print "Количество записей " & CStr (rs.RecordCount) Пример работы с DAO можно взять здесь . |
||||||||||||||||||||||||||||||||||||||||||||||
Так же в этом разделе:
|
||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
|