Je tente de charger à partir de fichiers texte, des requêtes dans une collection de requêtes MS Access à l'aide de VBScript. J'utilise quelque chose comme ceci: Le code provient de Here.Alternative à Application.LoadFromText pour les requêtes 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
Mais je ne sais pas comment créer une définition de requête en utilisant VBScript.
Des idées?
Note: Au départ, j'Exporté vers le fichier en utilisant quelque chose comme ceci:
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 –
Bien que rare, lorsque vous avez une requête qui a une sous-requête comme une table d'entrée , LoadFromText fonctionnera, mais créera une requête corrompue. Dans le fichier txt de la requête exportée, il y aura une section avec "Begin InputTables" et la valeur de la table "Name" sera votre sous-requête SQL. Après l'importation, access interprète ce nom en tant que nom de requête. La solution de contournement consiste à analyser le fichier d'exportation de requête, rechercher des sous-requêtes et «décompresser» les lors du processus d'exportation. Je me suis heurté à cela parce que je devais écrire une routine de réparation automatique qui nettoyait les blocs binaires corrompus des objets Access. – DHW