MS Access使用参数查询更新文本框出现#NAME?错误如何解决
问题原因与解决方法
#NAME? 报错是Access无法识别你给文本框配置的表达式导致的,对应排查和修改方法如下:
- 修正文本框控件来源配置
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] & "'")- 修正文本框控件来源配置
- 补全触发事件
你的查询同时依赖cbClubLocal和cbEquipoLocal两个组合框的值,当前只配置了cbEquipoLocal的更新后事件,需要给cbClubLocal也添加相同的触发逻辑:
Private Sub cbClubLocal_AfterUpdate() txtidEquipoLocal.Requery End Sub- 补全触发事件
- 拼写校验
确认窗体名称frmPartidos、三个控件名称cbClubLocal/cbEquipoLocal/txtidEquipoLocal的拼写完全正确,没有多字少字。
- 拼写校验
- 更稳定的替代实现方案
你也可以直接在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
相关产品推荐
相关产品推荐

