我有一个UPDATE
传递查询保存在Access 2007中。当我双击传递查询它成功运行。如何从VBA运行此查询?当我的“闪屏”加载时,我希望它能够运行。
我目前正在使用以下代码:
CurrentDb.Execute "Q_UPDATE_PASSTHROUGH", dbSQLPassThrough
但我收到以下消息:
传递查询包含所有连接信息,我通过多次运行确认SQL语法是正确的,所以不确定我在VBA调用中缺少什么。
使用QueryDef的Execute
方法:
CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute
我认为你不应该在这里显式包含dbSQLPassThrough选项,但如果你需要,可以尝试这样做:
CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute dbSQLPassThrough
我确认QueryDef的Execute
方法是实现目标的推荐方法。
CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute
但是,我可以指出,在Access 2010的类似情况下,使用dbSQLPassThrough
为Options
参数导致了Run-time error '3001': Invalid Argument
。
我最近遇到了同样的问题。虽然上面提到的Execute
方法适用于大多数情况,但有些人(包括我)在使用参数dbSQLPassThrough时遇到Run-time error '3001': Invalid Argument
。这也在我上面的答案中得到解决,即使在最简单的SQL语句中也会发生。
对于那些遇到同样问题的人,我建议使用OpenQuery
方法作为替代方案。
有效替换以下代码
CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute
将会
DoCmd.OpenQuery "Q_UPDATE_PASSTHROUGH"
我知道这个帖子已经有4年了,但是,在Google上搜索一个无效的Execute
方法的解决方案会直接带你到这个线程,这就是为什么我认为添加替代解决方案为我解决这个问题会很有用。