MS Access | Что такое Recordset

Recordset – класс VBA, позволяющий из кода открывать таблицы (включая внешние источники), запросы или данные формы.

С помощью Recordset можно, например, обновлять значения в полях таблицы/запроса/формы, получать количество строк, заполнять объект данными.

 

Для работы с Recordset, если работаем с таблицей другой БД, объявляем:

 

Const AnotherDBpath = "C:\Program Files\Microsoft Office\Office\Samples"

 

Recordset, если работаем с таблицей:

 

Dim mydb As Database 'база данных

Dim rst As Recordset

Set mydb = CurrentDb() 'указываем текущую базу данных

'Set Db = AnotherDBpath 'указываем другую БД, объявление константы AnotherDBpath выше

Set rst = mydb.OpenRecordset("TableName") 'открываем таблицу, получаем Recordset с результатами

 

 

Если работаем с данными формы:

 

Без объявлений как с таблицей, просто:

Set rst = Recordset

 

См. пример: Редактировать данные Recordset-а формы

 

Recordset, если работаем с запросом:

 

Dim mydb As Database 'база данных

Dim qry As QueryDef 'запрос базы данных

Dim rst As Recordset

Set mydb = CurrentDb() 'указываем текущую базу данных

'Set Db = AnotherDBpath ''Set Db = AnotherDBpath 'указываем другую БД, объявление константы AnotherDBpath выше

Set qry = mydb.QueryDefs("QueryName")

 

'если есть параметры в запросе:

qry.Parameters("ParameterName") = ParameterValue

'ParameterName - название параметра

'ParameterValue – значение

 

'если есть динамические критерии в запросе:

qry.Parameters("[Forms]![Form1]![TextBox1]") = [Forms]![Form1]![TextBox1]

 

Set rst = qry.OpenRecordset 'выполняем запрос, получаем Recordset с результатами

 

'-------------------------------------------------------------------------------------------

If rst.EOF = False Then '= если в Recordset есть записи

'EOF – End Of File

'BOF – Begin Of File

'EOF = True или BOF = False означает, что Recordset пуст (нет записей)

End if

 

rst.MoveFirst 'перейти на первую запись        

rst.MoveLast 'перейти на последнюю запись

rst.Add 'добавить запись

rst!FieldName = 1 'заполнить поле FieldName данными (=1)

rst.Update 'обновить рекордсет

 


 

См. также:

Обновить данные Recordset-а формы

Получить кол-во записей с помощью Recordset 

 

См. также примеры задач:

Распределение клиентов по менеджерам

Разные группы пользователей – разные права

Редактирование данных таблицы, с помощью Recordset

 



© 2018 | Анна Петросян | pashelp@yandex.ru