Альтернатива Application.LoadFromText для запросов MS Access - PullRequest
2 голосов
/ 13 мая 2009

Я пытаюсь загрузить из текстовых файлов запросы в коллекцию запросов MS Access с использованием VBScript. Я использую что-то вроде этого: Код возник из Здесь .

 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

Ответы [ 2 ]

4 голосов
/ 13 мая 2009

Сохраняет запрос defs

For i = 0 To db.QueryDefs.Count - 1
    Application.SaveAsText acQuery, db.QueryDefs(i).Name, sExportpath & "\" & db.QueryDefs(i).Name & ".sql"
Next i

Тогда LoadFromText должен работать

3 голосов
/ 14 мая 2009

Просто для полноты я хотел добавить свое решение.

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
end if

Очевидно, все, что нужно было добавить, было:

  Const acQuery = 1

Благодаря DJ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...