运行时错误2471:表达式作为查询参数生成错误

时间:2015-08-25 17:50:49

标签: vba ms-access access-vba ms-access-2010

我在Access 2010中有一个引用查询的子。它们应该通过三列并找到最低的一列。当我运行它时,我收到一个错误:“您作为查询参数输入的表达式产生了此错误:'Projects.ProjectID'

子:

Private Sub UpdatePriority_Click()
Overall_Priority = DMin("MinvonGeoPri", "qryOverallPriority", "Projects.ProjectId=1")
End Sub

查询:

SELECT 
     Min(Projects.GeoPavePri) AS MinvonGeoPri
,    Min(Projects.StrPri) AS MinvonStrPri
,    Min(Projects.SOPri) AS MinvonSOPri
,    Projects.ProjectId
FROM 
     Projects
WHERE
     Projects.ProjNo=Activity.ProjNo;

Google建议我在1左右添加引号,因此我将其更改为"Projects.ProjectID=" & 1 & "",但它没有帮助。我已经仔细检查过拼写,字段名称,而且我的想法已经用完了。任何建议都会很棒。

1 个答案:

答案 0 :(得分:1)

从select语句创建qryOverallPriority后,引用Projects.[ProjectId]字段只是[ProjectId]。简而言之,您失去了引用父表的能力,尽管它可以被引用为qryOverallPriority.[ProjectId],但这不是必需的。

Private Sub UpdatePriority_Click()
    Overall_Priority = DMin("MinvonGeoPri", "qryOverallPriority", "ProjectId=1")
End Sub

由保存的查询提取的任何字段都由该保存查询查看它的方式引用,而不是由构成已保存查询的基础SQL select语句引用。同样,别名字段将由其别名引用;例如[ProjectId]和[ProjectId2],用于连接中的[ProjectId]字段。

您还在使用不带MIN子句的聚合GROUP BY函数。使用Access前端确保您获得所需的结果。也许是这样的,

SELECT 
     Min(p.GeoPavePri) AS MinvonGeoPri
    ,Min(p.StrPri) AS MinvonStrPri
    ,Min(p.SOPri) AS MinvonSOPri
    ,p.ProjectId
FROM 
     Projects p
WHERE
     p.ProjNo=Activity.ProjNo;
GROUP BY p.GeoPavePri, p.StrPri, p.SOPri, p.ProjectId

你应该可以使用,

Overall_Priority = DLookup("MinvonGeoPri", "qryOverallPriority", "ProjectId=1")

这是未经测试的。我没有构建完整的测试环境,我不知道Activity.ProjNo来自哪里。