我正在尝试为查询设置sql代码,然后从VB运行查询。问题是,当我动态更改sql时,VB会打开查询,但不会刷新查询。它仍然显示来自旧sql的结果。如果我检查sql,它已更改,然后再运行查询(!按钮),它将与新的sql一起运行。
我正在做:
Set qdf = CurrentDb.QueryDefs("temp_query")
qdf.SQL = SQL_query_string
MsgBox (qdf.SQL)
DoCmd.OpenQuery ("temp_query")
与SQL_query_string
包含新的动态生成的sql。该消息框显示我确实拥有新字符串。而且,正如我所说,我可以在查询本身中对其进行检查,并且它已经发生了变化,但DoCmd.OpenQuery("temp_query")
似乎只是为查询提供了焦点,而不是实际运行它。用新的sql运行什么命令?
如果查询已经打开,则需要将其关闭然后重新打开,有趣的是,您可能甚至不需要检查它是否已打开,只需关闭然后运行代码即可。
DoCmd.Close acQuery, "temp_query"
Set qdf = CurrentDb.QueryDefs("temp_query")
qdf.SQL = SQL_query_string
'MsgBox (qdf.SQL)
DoCmd.OpenQuery "temp_query"
确保您接下来没有使用“设置警告”或“出错时恢复”,因为它们会掩盖错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句