DoCmd.OutputTo + 使用 SQL 命令 + VBA

KSM*_*KSM 3 sql ms-access vba

大家好,我在网上做了一些研究,但找不到解决方案,希望这里有人可以提供帮助。我的做法是将 sql 语句放置到 DoCmd.OutputTo

例如

      Set tempSql= CurrentDb.OpenRecordset("SELECT * FROM SpecialEvent WHERE [HG_ID] = " & HG_ID & ";")

      DoCmd.OutputTo acOutputQuery, "tempSql", acFormatXLS, strDir + "try.xls", 0
Run Code Online (Sandbox Code Playgroud)

如果有人可以指导我构建这种方法,我将不胜感激。

Fio*_*ala 5

您可以将查询的sql设置为输出sql并在DoCmd.OutputTo中使用查询名称

tempSql= "SELECT * FROM SpecialEvent WHERE [HG_ID] = " & HG_ID

If IsNull(DLookup("name", "msysobjects", "name='query1'")) Then
    CurrentDb.CreateQueryDef "Query1", tempSql 
Else
    CurrentDB.QueryDefs("Query1").SQL = TempSQL
End If


DoCmd.OutputTo acOutputQuery, "Query1", acFormatXLS, strDir & "try.xls", 0
Run Code Online (Sandbox Code Playgroud)

请注意,VBA 中的连接符是 &,而不是 +

加号可用于连接,但由于它处理空值的方式,因此需要非常小心。

  • 谢谢,这非常有用,对于其他查看此内容的用户,如果您需要最终删除查询,就像我刚刚添加 DoCmd.DeleteObject acQuery,“Query1” (3认同)