在VBA中设置Recordsource时失败,但在查询设计器中工作正常

在VBA中设置Recordsource时失败,但在查询设计器中工作正常,vba,ms-access-2002,Vba,Ms Access 2002,编辑:这是通过使用DAO记录集而不是ADO修复的 我正在尝试在代码中设置一个recordsource,该代码将输出到Excel工作簿。当VBA点击.Open时,它会出现以下错误:“您试图执行的查询未将指定的表达式'WP1+WP2+WP3+WP4+WP5'作为聚合表达式的一部分。但是,如果我将源粘贴到查询窗口中,它可以正常工作。下面我已在源中剪切出不相关的字段 以下是代码中有问题的部分: With rst .ActiveConnection = CodeProject.Connection .Cu

编辑:这是通过使用DAO记录集而不是ADO修复的

我正在尝试在代码中设置一个recordsource,该代码将输出到Excel工作簿。当VBA点击.Open时,它会出现以下错误:“您试图执行的查询未将指定的表达式'WP1+WP2+WP3+WP4+WP5'作为聚合表达式的一部分。但是,如果我将源粘贴到查询窗口中,它可以正常工作。下面我已在源中剪切出不相关的字段

以下是代码中有问题的部分:

With rst
.ActiveConnection = CodeProject.Connection
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Source = "SELECT UnderlyingQuery3.WP1, UnderlyingQuery3.WP2, UnderlyingQuery3.WP3, UnderlyingQuery3.WP4, UnderlyingQuery3.WP5 FROM UnderlyingQuery3 ORDER BY [irrelevant fields...]"
.Open Options:=adCmdText
End With
UnderlyingQuery3工作正常。注意,UnderlyingQuery3包含

SELECT (WP1 + WP2 + WP3 + WP4 + WP5) AS WP5Yr FROM (...)
但是,WP6不会执行失败的查询

我已尝试生成另一个查询,而不是将SQL写入源。该查询在查询窗口中可以正常工作。但是,将该查询设置为源(选项:=adCmdStoredProc)仍然失败,并出现相同的错误

我还执行了压缩和修复以及反编译/重新编译,但没有任何效果。除此之外,我没有证据表明可能存在损坏

下层查询3的结构:

SELECT 
UnderlyingQuery2.WP1, 
UnderlyingQuery2.WP2, 
UnderlyingQuery2.WP3, 
UnderlyingQuery2.WP4, 
UnderlyingQuery2.WP5, 
UnderlyingQuery2.WP5Yr, 
FROM UnderlyingQuery2;
底层查询2的结构:

SELECT 
(CENSORED FIELDS), 
Sum(DATA.WP1) AS WP1, 
Sum(DATA.WP2) AS WP2, 
Sum(DATA.WP3) AS WP3, 
Sum(DATA.WP4) AS WP4, 
Sum(DATA.WP5) AS WP5,
WP1+WP2+WP3+WP4+WP5 AS WP5Yr 
FROM UnderlyingQuery1 AS DATA 
GROUP BY (CENSORED FIELDS) 
UNION ALL 
SELECT 
(CONSTANTS REPRESENTING AGGREGATES OF CENSORED FIELDS),
Sum(DATA.WP1) AS WP1, 
Sum(DATA.WP2) AS WP2, 
Sum(DATA.WP3) AS WP3, 
Sum(DATA.WP4) AS WP4, 
Sum(DATA.WP5) AS WP5 
FROM UnderlyingQuery1 AS DATA

我正在努力修正格式,但事实就是这样!我真的认为UnderlyingQuery1在这里是不相关的。它只是将原始数据表与参数表进行内部联接,为数据选择特定的年份和其他条件

Hm,是的=/这很奇怪,因为UnderlyingQuery工作正常,并且源在查询设计器中也工作正常。我将尝试一些可靠的源代码,这些源代码对我来说从未失败过…好吧,从SimpleTable中选择*成功。我无法共享数据库的副本,但让我添加UnderlyingQuery。请理解,这需要一些时间,因为我需要屏蔽字段名(敏感数据)。我非常感谢您的帮助,并将在几分钟后回复。我添加了更多详细信息。很抱歉,我无法与您分享所有信息,但工作不会让我满意!我没有添加此信息是我的错-我使用的是ADO记录集,但将其切换到DAO成功。感谢您的帮助,尽管由于我的休息,您无法做很多工作价格。