Я создаю скрипт vbs, который будет работать как автообновление для инструмента, который использует MS Access в качестве внешнего интерфейса. Сценарий VBS будет запущен с кодом VBA из MS Access (1). Частью этого скрипта является функция, которая обнаруживает текущую версию инструмента, создавая соединение ADODB с файлом интерфейса пользователя (Test.accdb) и считывая значение «CurrentVersion» из таблицы «tblLocalParameters» (2).
Проблема в том, что когда я дважды щелкаю по скрипту, функция с ADODB работает правильно, но когда я пытаюсь запустить его с MS Access VBA, она выдает ошибку: «Нераспознанный формат базы данных»
IЯ не уверен, что необходима дополнительная информация обо всем сценарии автоматического обновления, но я планировал: проверить с помощью базы данных SQL, обновлен ли инструмент. Если нет - запустите скрипт обновления. Скрипт закроет MS Access с помощью команды оболочки, затем скопирует новый файл и снова запустит MS Access.
Я попытался запустить тот же скрипт из Excel и из другого файла MS Access, он вызвал ту же ошибку.
Буду признателен за помощь в устранении ошибки «Неопознанный формат базы данных».
MS ACCESS CODE:
(1)
Dim Test()
Shell "wscript ""C:\Test_Folder\TEST.vbs""", vbNormalFocus
End Sub
(2)
VBS SCRIPT CODE
Option Explicit
Dim strFile
strFile = "C:\Test_Folder\TEST.accdb"
WScript.Echo FileReadAccessDB(strFile,"tblLocalParameters","ParameterValue","ParameterName","'VersionCurrent'")
'-------------------------------------------------------------
Function FileReadAccessDB(DbPath, tblName,fldName,IdCol,IdVal)
Dim cn, rs
Dim qSQL
Dim errNo
Set cn = CreateObject("ADODB.connection")
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DbPath & ";Persist Security Info=False;"
cn.Open
Set rs = CreateObject("ADODB.recordset")
qSQL = "SELECT " & fldName & " FROM " & tblName & " WHERE " & IdCol & " = " & IdVal
rs.open qSQL, cn
FileReadAccessDB = rs.fields(fldName).value
rs.close
cn.close
End Function