我可能有一个解决方法作为临时修复,但如果我无法将其修复好,这将导致问题。
我在MS Access中有一个查询,当它自己运行时运行正常,但是当我使用CurrentDb.Execute命令运行它时,它会给出错误“运行时错误'3146':ODBC - 调用失败“。
如果它从立即窗口运行,我也检查它是否失败,然后它也失败了。
查询调用来自三个不同的表以及一个由VBA脚本设计的本地表。如果删除了一个特定的表,VBA脚本将起作用。
我知道这是非常通用的,但为什么查询会在任何地方工作,除非它是从VBA调用的?
更新:最初的问题措辞不力,我为此道歉。它是在飞行中写的,我对我遇到的问题感到困惑。
这里,我认为,简而言之就是问题:如果VBA调用的查询是从公司服务器上的过多表(3个或更多)中提取的,那么它会给出“调用失败”错误。如果只是双击查询,它运行正常。
现在我正在考虑它,它可能是服务器端问题吗?
我实施的解决方法是创建本地表的多个查询,然后运行指向本地表而不是服务器表的原始查询。它可以工作,但在编写代码和运行代码时都是一个非常耗时的过程。对于我现在正在做的这个特定项目,它会起作用,但能够让它正常工作真的很棒。
答案 0 :(得分:0)
我遇到了这个问题,因为Access可以从Access获得更多功能,而不是通过Excel的SQL语句使用。因此,我会检查您在查询中使用的任何方法,并查看哪些方法在Access之外无效。
答案 1 :(得分:0)
如果您发布查询以便我们看到它的语法,那将会很有帮助。
但要探讨几个问题:
CurrentDB.Execute
仅适用于操作查询(追加,更新,
制表)。对于选择查询,请使用链接表或记录集。
将您的外部表链接到当前数据库,以便他们可以 可以像任何其他本地表一样使用。访问可以连接到其他 访问文件,Excel源或任何符合ODBC / OLEDB的数据库(Oracle, SQL Server,MySQL等。)
使用ADO或DAO记录集提取外部数据然后 在VBA中根据需要在本地连接查询。