Access中DLookup公式持续返回#Name?错误求助
解决Access子窗体控件DLookup返回#Name?错误的方法
问题根源
你在表达式里引用子窗体控件时使用了完整的主窗体层级路径,但在子窗体内部直接引用同窗体的控件,不需要加上主窗体和子窗体的路径前缀,这会导致Access无法识别控件名称,从而返回#Name?错误。另外字符串拼接的引号处理也存在潜在问题。
修正后的控件来源表达式
将KodeAkun控件的来源替换为以下表达式:
=IIf(IsNull([NamaAkun]) Or [NamaAkun]="", "", DLookUp("[KodeAkun]", "CoA", "[NamaAkun]='" & Replace([NamaAkun], "'", "''") & "'"))
关键调整说明
- 简化控件引用:在子窗体内部直接用
[NamaAkun]即可,无需[Forms]![InputIDJurnal]![DetJurnal]![NamaAkun],Access会自动识别同窗体的控件 - 完善空值处理:新增
IsNull([NamaAkun])判断,覆盖控件值为Null的场景,避免不必要的报错 - 处理特殊字符:用
Replace([NamaAkun], "'", "''")转义NamaAkun值中的单引号,防止DLookup的条件字符串因特殊字符断裂
额外优化建议
如果NamaAkun是下拉选择控件,建议在其更新后事件中添加代码,确保KodeAkun的值实时同步:
- 打开子窗体设计视图,选中NamaAkun控件
- 打开控件的事件属性面板,找到
更新后事件 - 选择“代码生成器”,添加以下VBA代码:
Me.KodeAkun.Requery
内容的提问来源于stack exchange,提问作者Uzuka
相关产品推荐
相关产品推荐

