You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access使用参数查询更新文本框出现#NAME?错误如何解决

问题原因与解决方法

#NAME? 报错是Access无法识别你给文本框配置的表达式导致的,对应排查和修改方法如下:

    1. 修正文本框控件来源配置
      Access不支持直接将纯SELECT查询语句作为文本框的控件来源,你可以改用DLookup域聚合函数作为控件来源,写法如下:
    ' 对应id是数值类型的场景
    =DLookup("ID", "tblClubs_Equipos", "idClubs = " & [Forms]![frmPartidos]![cbClubLocal] & " AND idEquipos = " & [Forms]![frmPartidos]![cbEquipoLocal])
    
    ' 如果id是文本类型,需要给值加单引号包裹
    =DLookup("ID", "tblClubs_Equipos", "idClubs = '" & [Forms]![frmPartidos]![cbClubLocal] & "' AND idEquipos = '" & [Forms]![frmPartidos]![cbEquipoLocal] & "'")
    
    1. 补全触发事件
      你的查询同时依赖cbClubLocal和cbEquipoLocal两个组合框的值,当前只配置了cbEquipoLocal的更新后事件,需要给cbClubLocal也添加相同的触发逻辑:
    Private Sub cbClubLocal_AfterUpdate()
        txtidEquipoLocal.Requery
    End Sub
    
    1. 拼写校验
      确认窗体名称frmPartidos、三个控件名称cbClubLocal/cbEquipoLocal/txtidEquipoLocal的拼写完全正确,没有多字少字。
    1. 更稳定的替代实现方案
      你也可以直接在VBA中完成查询赋值,不需要配置文本框的控件来源,出错概率更低:
    Private Sub UpdateEquipoLocalID()
        Dim rs As DAO.Recordset
        Dim strSQL As String
        ' 文本类型的话对应在值两侧加单引号即可
        strSQL = "SELECT ID FROM tblClubs_Equipos WHERE idClubs = " & Me.cbClubLocal & " AND idEquipos = " & Me.cbEquipoLocal
        Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
        Me.txtidEquipoLocal = IIf(rs.EOF, Null, rs!ID)
        rs.Close
        Set rs = Nothing
    End Sub
    
    Private Sub cbEquipoLocal_AfterUpdate()
        Call UpdateEquipoLocalID
    End Sub
    
    Private Sub cbClubLocal_AfterUpdate()
        Call UpdateEquipoLocalID
    End Sub
    

内容的提问来源于stack exchange,提问作者Fan Santboia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:24:02