Я пытаюсь загрузить из текстовых файлов, запросов в коллекцию запросов MS Access с помощью VBScript. Я использую что-то вроде этого: Код зарождается от Here.Альтернатива Application.LoadFromText для запросов MS Access
for each myFile in folder.Files
objecttype = fso.GetExtensionName(myFile.Name)
objectname = fso.GetBaseName(myFile.Name)
WScript.Echo " " & objectname & " (" & objecttype & ")"
if (objecttype = "form") then
oApplication.LoadFromText acForm, objectname, myFile.Path
elseif (objecttype = "bas") then
oApplication.LoadFromText acModule, objectname, myFile.Path
elseif (objecttype = "mac") then
oApplication.LoadFromText acMacro, objectname, myFile.Path
elseif (objecttype = "report") then
oApplication.LoadFromText acReport, objectname, myFile.Path
elseif (objecttype = "sql") then
'oApplication.LoadFromText acQuery, objectname, myFile.Path
' Add create querydef code here
end if
next
Но я не уверен, как создать определение запроса с помощью VBScript.
Любые идеи?
Примечание: я первоначально вывезенных в файл, используя что-то вроде этого:
For Each myObj In oApplication.CurrentDb.QueryDefs
Set f = fso.CreateTextFile(sExportpath & "\" & myObj.Name & ".sql", True)
f.WriteLine(myObj.SQL)
f.Close
Next
Const acQuery = 1 –
Хотя редко, когда у вас есть запрос, который имеет подзапрос в качестве входной таблицы , LoadFromText будет работать, но создаст поврежденный запрос. Внутри экспортированного txt-файла запроса будет раздел с «Begin InputTables», а значение «Name» таблицы будет вашим SQL-подзапросом. После импорта доступ интерпретирует это имя как имя запроса. Обходной путь заключается в анализе файла экспорта запроса, поиске подзапросов и «распаковывании» их во время процесса экспорта. Я столкнулся с этим, потому что мне пришлось написать процедуру автоматического исправления, которая очищала поврежденные двоичные блоки из объектов Access. – DHW