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

How to execute an external .sql file pass-through query in ms-access

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

但是,我想 运行 我的外部 .sql 文件无法访问。我的外部 .sql 文件位于本地文件夹中。这样,当我将某些内容更改为任一查询时,我不必更新我的外部 .sql 文件和我在 ms-access 中存储的查询。

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

有办法吗?

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

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