我尝试为查询设置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运行它?
答案 0 :(得分:2)
如果查询已经打开,你需要关闭它然后重新打开,有趣的是,你可能甚至不需要检查它是否打开,你可以关闭然后运行代码。
DoCmd.Close acQuery, "temp_query"
Set qdf = CurrentDb.QueryDefs("temp_query")
qdf.SQL = SQL_query_string
'MsgBox (qdf.SQL)
DoCmd.OpenQuery "temp_query"
确保您没有使用过“设置警告”或“接着错误”,因为它们会掩盖错误。