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

RunTime Error 2471: Expression as Query Parameter Producing Error

我在 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 & "",但是没有用。我已经仔细检查了拼写、字段名称,但我 运行 没有想法。任何建议都会很棒。

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

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

已保存查询提取的任何字段均由保存查询如何查看它引用,而不是来自构成已保存查询的基础 SQL select 语句。同样,别名字段将由它们的别名引用;例如联接中两个 [ProjectId] 字段的 [ProjectId] 和 [ProjectId2]。

您还在使用不带 GROUP BY 子句的聚合 MIN 函数。使用 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 来自哪里。