从Access VBA执行SQL Server传递查询

问题描述 投票:3回答:3

我有一个UPDATE传递查询保存在Access 2007中。当我双击传递查询它成功运行。如何从VBA运行此查询?当我的“闪屏”加载时,我希望它能够运行。

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

CurrentDb.Execute "Q_UPDATE_PASSTHROUGH", dbSQLPassThrough

但我收到以下消息:

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

sql ms-access access-vba pass-through
3个回答
5
投票

使用QueryDef的Execute方法:

CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute

我认为你不应该在这里显式包含dbSQLPassThrough选项,但如果你需要,可以尝试这样做:

CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute dbSQLPassThrough

1
投票

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

CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute

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


1
投票

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

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

有效替换以下代码

CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute

将会

DoCmd.OpenQuery "Q_UPDATE_PASSTHROUGH"

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

© www.soinside.com 2019 - 2024. All rights reserved.