【问题标题】:Execute SQL Server Pass-Through Query From Access VBA从 Access VBA 执行 SQL Server 传递查询
【发布时间】:2019-04-10 16:29:58
【问题描述】:

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

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

CurrentDb.Execute "Q_UPDATE_PASSTHROUGH", dbSQLPassThrough

但我收到以下消息:

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

【问题讨论】:

    标签: sql ms-access vba pass-through


    【解决方案1】:

    使用 QueryDef 的 Execute 方法:

    CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute
    

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

    CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute dbSQLPassThrough
    

    【讨论】:

      【解决方案2】:

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

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

      以下代码的有效替换

      CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute
      

      应该是

      DoCmd.OpenQuery "Q_UPDATE_PASSTHROUGH"
      

      我知道这个帖子有 4 年历史了,但是,在 Google 上为无效的 Execute 方法搜索解决方案会直接带您进入这个帖子,这就是为什么我认为添加一个解决方案的替代解决方案会很有用对我来说这个问题。

      【讨论】:

      • experiencing a Run-time error '3001': Invalid Argument when using the parameter dbSQLPassThrough. -- 如果省略参数dbSQLPassThrough,它是否也不起作用?
      • Execute 语句在我省略 dbSQLPassThrough 参数的情况下有效,但从我对 Access VBA 的理解仍然非常有限的情况来看,我认为有必要使用它,否则重SQL 语句在我的本地机器上执行,而不是在 SQL Server 上。
      • 没有。如果您.Execute 保存的查询是 PT 查询(即具有 Connect 字符串),则不需要该参数 - Access 知道这是一个 PT 查询,并且不会尝试使用 Access DB 引擎运行它。在大多数情况下它无论如何都行不通,因为 SQL 方言在 Access 和服务器 DB 之间是不同的。
      【解决方案3】:

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

      CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多