首页 文章

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

提问于
浏览
2

我在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 回答

  • 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 来自哪里 .

相关问题