Ich versuche, von Textdateien Abfragen in eine MS Access Queries Collection mit VBScript zu laden. Ich verwende so etwas wie: Der Code stammt aus Here.Alternative zu Application.LoadFromText für MS-Access-Abfragen
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
Aber ich bin mir nicht sicher, wie Sie eine Abfragedefinition mit VBScript erstellen.
Irgendwelche Ideen?
Hinweis: ich ursprünglich in der Datei Exportiert so etwas wie dies mit:
For Each myObj In oApplication.CurrentDb.QueryDefs
Set f = fso.CreateTextFile(sExportpath & "\" & myObj.Name & ".sql", True)
f.WriteLine(myObj.SQL)
f.Close
Next
Konst acQuery = 1 –
Obwohl selten, wenn Sie eine Abfrage, die eine Unterabfrage als Eingabetabelle hat , LoadFromText wird funktionieren, aber eine beschädigte Abfrage erstellen. In der exportierten Abfragetxtdatei befindet sich ein Abschnitt mit "Begin InputTables" und der Wert der Tabelle "Name" ist Ihre Unterabfrage SQL. Nach dem Import interpretiert access diesen Namen als querydef-Name. Die Problemumgehung besteht darin, die Abfrageexportdatei zu analysieren, nach Unterabfragen zu suchen und sie während des Exportvorgangs zu "entpacken". Ich stieß darauf, weil ich eine Auto-Fix-Routine schreiben musste, die beschädigte Binärblöcke von Access Objects löschte. – DHW