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