如何在 ms-access 中执行外部 .sql 文件传递​​查询

hon*_*rzz 0 ms-access vba pass-through

我在 ms-access 中存储了几个通过查询设计向导创建的直通查询。我只是将本地 .sql 文件中的代码复制并粘贴到 access 中的 sql 视图编辑器中并保存。一切都运行良好。

但是,我想通过访问运行我的外部 .sql 文件。我的外部 .sql 文件位于本地文件夹中。这样,当我对任一查询进行更改时,我不必更新外部 .sql 文件和 ms-access 中存储的查询。

就其价值而言,我所有的传递查询都是“SELECT * FROM”

有没有办法做到这一点 ?

Par*_*ait 5

正如 @GordonThompson 建议的那样,只需将 .sql 的内容(与任何其他编程脚本一样的文本文件)读入QueryDef.SQL 属性(引用您保存的查询)。

Sub ReadAndSaveSQL()
    Dim LoadFileStr As String
    Dim qdef As QueryDef  

    ' READ .SQL INTO A STRING VARIABLE
    With CreateObject("Scripting.FileSystemObject")
          LoadFileStr = .OpenTextFile("C:\Path\To\Script.sql", 1).readall
    End With

    ' INITIALIZE QUERYDEF
    Set qdef = CurrentDb.QueryDefs("mySavedPassThroughQuery")

    qdef.SQL = LoadFileStr                       ' REWRITE QUERY'S SQL
    qdf.Close                                    ' CLOSE AND SAVE QUERY
    Set qdef = Nothing                           ' UNINITIALIZE QUERYDEF

    DoCmd.OpenQuery "mySavedPassThroughQuery"    ' OPEN SELECT QUERY TO SCREEN
End Sub
Run Code Online (Sandbox Code Playgroud)