4

UPDATE在 Access 2007 中保存了一个直通查询。当我双击直通查询时,它运行成功。如何让这个查询从 VBA 运行?我希望它在我的“启动画面”加载时运行。

我目前正在使用以下代码:

CurrentDb.Execute "Q_UPDATE_PASSTHROUGH", dbSQLPassThrough

但我收到以下消息:

在此处输入图像描述

传递查询包含所有连接信息,我通过多次运行它确认 SQL 语法是正确的,所以不确定我在 VBA 调用中缺少什么。

4

3 回答 3

4

使用 QueryDef 的Execute方法:

CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute

我认为您不需要在此处显式包含dbSQLPassThrough选项,但如果您愿意,可以尝试这样:

CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute dbSQLPassThrough
于 2014-12-30T18:12:10.037 回答
3

我最近遇到了同样的问题。虽然上述Execute方法适用于大多数情况,但有些人(包括我)Run-time error '3001': Invalid Argument在使用参数dbSQLPassThrough时遇到了问题。这也在我上面的答案中得到了解决,即使在最简单的 SQL 语句中也会发生。

对于那些有同样问题的人,我建议使用该OpenQuery方法作为替代方法。

以下代码的有效替换

CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute

将会

DoCmd.OpenQuery "Q_UPDATE_PASSTHROUGH"

我知道这个线程已经有 4 年历史了,但是,在 Google 上搜索无效Execute方法的解决方案会将您直接带到这个线程,这就是为什么我认为添加一个为我解决这个问题的替代解决方案会很有用。

于 2019-04-10T08:24:37.680 回答
1

我确认 QueryDef 的Execute方法是实现目标的推荐方法。

CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute

但是,我可以指出,在 Access 2010 的类似情况下,使用dbSQLPassThroughforOptions参数会导致Run-time error '3001': Invalid Argument.

于 2016-05-20T08:23:47.197 回答