我在Access 2007中保存了UPDATE
传递查询。当我双击传递查询时,它成功运行。如何从VBA运行此查询?我喜欢在我的"闪屏"负荷。
我目前正在使用以下代码:
CurrentDb.Execute "Q_UPDATE_PASSTHROUGH", dbSQLPassThrough
但我收到以下消息:
传递查询包含所有连接信息,并且通过多次运行确认SQL语法是正确的,因此不确定我在VBA调用中缺少的是什么。
答案 0 :(得分:5)
使用QueryDef的Execute
方法:
CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute
我认为你不应该在这里明确地包含 dbSQLPassThrough 选项,但是你可以尝试这样做:
CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute dbSQLPassThrough
答案 1 :(得分:1)
我确认QueryDef的Execute
方法是实现目标的推荐方法。
CurrentDb.QueryDefs("Q_UPDATE_PASSTHROUGH").Execute
但是,我可以指出,在与Access 2010类似的情况下,dbSQLPassThrough
参数使用Options
会导致Run-time error '3001': Invalid Argument
。
答案 2 :(得分: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
方法的解决方案会将您直接带到该线程,这就是为什么我认为添加替代解决方案会很有用的原因为我解决了这个问题。