Пример технологии доступа к данным DAO

Начальные условия:

Использование технологии доступа к данным DAO в Microsoft Access.
Язык Microsoft Visual Basic for Applications.

Пример реализации на основе формы ниже на картинке. Необходимо при нажатии кнопки бронировать, в таблице комнат, у выбранного номера комнаты поставить статус бронирован.

Форма бронирования

Для добавления кода необходимо перейти в окно свойств кнопки (Правой кнопкой мыши по необходимой кнопке в режиме конструктора —> Свойства). Вкладка События. Нажать кнопку с многоточием напротив текста Нажатие кнопки. Затем выбрать из списка пункт «Программы» и нажать ОК.

Попадаем в программную среду Microsoft Visual Basic for Applications, как на рисунке ниже

Visual Basic
Вставляем следующий код:

rem Если Ошибка выходим 
On Error GoTo Err_Кнопка15_Click
 Dim er
 er = False

Dim rs As DAO.Recordset
Dim strSql As String
rem Создаем текст запроса 
    strSql = "SELECT [Состояние], [Number Ap] FROM House;"
rem Подключаем БД и выполняем запрос с помощью DAO
    Set rs = DBEngine(0)(0).OpenRecordset(strSql)

rem Проверка на пустые поля в Форме
If (IsNull([Фамилия])) Then
    er = True
    MsgBox "Необходимо Заполнить поле Фамилия ", vbCritical
    GoTo Exit_Кнопка15_Click:
   End If
   If (([Срок]  [Дата прибытия])) Then
        er = True
        MsgBox "Некорректные даты ", vbCritical
        GoTo Exit_Кнопка15_Click:
   End If
   If ((IsNull(Срок)) Or (IsNull([Дата прибытия]))) Then
    er = True
    MsgBox "Даты необходимо заполнить ", vbCritical
    GoTo Exit_Кнопка15_Click:
   End If
rem работаем с БД, проходим по всем записям таблицы
If (Not (er)) Then
    Do While Not rs.EOF
           rem ищем нашу комнату
           If rs![Number Ap] = [ID Номер Апарт] And (Not (IsNull([Фамилия]))) Then
                rem редактируем запись в таблице
                rs.Edit
                rs![Состояние] = "бронирован"
                rs.Update
            Else
            End If
     rs.MoveNext
    Loop
    rs.Close
End If
rem здесь точки выхода из программы
    Set rs = Nothing
   Me.Dirty = False
   DoCmd.Close acForm, Me.Name
Exit_Кнопка15_Click:
    Exit Sub
Err_Кнопка15_Click:
   MsgBox Err.Description, vbCritical
   Resume Exit_Кнопка15_Click