DoCmd.OutputTo+;使用SQL命令+;VBA

DoCmd.OutputTo+;使用SQL命令+;VBA,sql,vba,ms-access,Sql,Vba,Ms Access,大家好,我在网上做了一些研究,但我找不到解决办法,希望这里有人能帮上忙。我的目标是将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

大家好,我在网上做了一些研究,但我找不到解决办法,希望这里有人能帮上忙。我的目标是将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
比如说

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

      DoCmd.OutputTo acOutputQuery, "tempSql", acFormatXLS, strDir + "try.xls", 0

如果有人能指导我建立这种方法,我将不胜感激

您可以将查询的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
请注意,串联器在VBA中是&而不是+


加号可以用来连接,但它需要特别小心,因为它处理空值的方式。

谢谢你,如果你需要删除查询,那么对于其他用户来说,这非常有效,就像我刚才添加DoCmd.DeleteObject acQuery,“Query1”一样