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

MS Access窗体Equipment组合框设默认值报#Name?错误求助

MS Access 组合框默认值返回#Name?错误修复

问题场景

在MS Access中为窗体控件配置默认值,实现扫描录入数据时自动复用固定字段内容,避免重复输入。
当前窗体共3个组合框控件,ToTech、FromTech两个组合框可在单条记录录入完成后正常保留取值,作为下一条新记录的默认值;仅Equipment组合框持续返回#Name?错误。
已尝试操作:先后将对应绑定字段名从"Type"修改为"Equipment Type"、再调整为"Equipment",均未修复问题。
已知关联信息:存储设备类型的表仅包含EQType字段,该字段已设置为主键。

现有配置

默认值设置VBA代码

Private Sub Serial_Number_AfterUpdate()
[Equipment].DefaultValue = [Equipment]
[ToTech].DefaultValue = [ToTech]
[FromTech].DefaultValue = [FromTech]
End Sub

控件与窗体基础配置

  • 窗体属性:名为Transfers的分割窗体(Split form),记录源(Record Source)为Transfers表
  • 各控件参数:
    • Serial Number(文本框):控件来源(Control source)为Serial Number
    • Equipment(组合框):控件来源为Equipment,行来源(Row Source)为SELECT EQType FROM EquipmentTypes;
    • From Tech(组合框):行来源为SELECT Roster.TechID FROM Roster;
    • To Tech(组合框):行来源为SELECT Roster.TechID FROM Roster;
    • Date Added(文本框):默认值设置为=Date()

错误原因

  1. DefaultValue属性格式错误:Access中控件的DefaultValue属性为字符串类型,需要传入合法的表达式格式。ToTech、FromTech绑定的是数字类型的TechID,直接赋值可被解析为合法数字表达式,因此能正常生效;Equipment绑定的是文本类型的设备类型值,未加引号包裹时会被Access识别为对象名引用,找不到对应对象就触发#Name?错误。
  2. 名称解析歧义:Equipment组合框的控件名和绑定的字段名完全重名,VBA中直接写[Equipment]时,Access无法明确区分引用的是控件、字段还是其他同名对象,进一步加剧了解析错误。

修复方案

  1. 替换原有VBA代码为以下版本,按值类型正确拼接默认值表达式,同时用Me!明确引用当前窗体控件,避免歧义:
Private Sub Serial_Number_AfterUpdate()
    ' 文本类型值用单引号包裹,同时转义值内可能存在的单引号
    Me!Equipment.DefaultValue = "'" & Replace(Me!Equipment.Value, "'", "''") & "'"
    ' 数字类型ID直接转为字符串赋值,处理空值避免报错
    Me!ToTech.DefaultValue = Nz(Me!ToTech.Value, "")
    Me!FromTech.DefaultValue = Nz(Me!FromTech.Value, "")
End Sub
  1. 如果修改代码后仍存在报错,直接将Equipment组合框的控件名称修改为cboEquipment,彻底避免控件名和绑定字段名重名导致的解析冲突,同步将代码中对应引用改为Me!cboEquipment即可。
  2. 额外校验:确认Transfers表中Equipment字段的类型、长度,和EquipmentTypes表中EQType字段完全一致,避免类型不匹配导致的写入异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:24:28