Архив рубрики: Visual Basic

The script engine has not been initialized to a valid language

Перестала работать программа “A”.

Выдает ошибку:

The operation could not be completed because the script engine has not been initialized to a valid language

скриншот проблемы

Повторная установка программы не решила проблемы.

Оказалось, что недавно был удален антивирус McAffe. После этого началась эта ошибка.

Uninstall McAffe не всегда корректно удаляет антивирус. Необходимо скачать с их сайта и запустить утилиту MCPR.exe (MCPR (C) McAfee, Inc).

После перезагрузки программа “A” уже работала без ошибок.

Пример технологии доступа к данным 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