Access中按合同生成连续采购订单编号失败求助
解决Access表单中DMax函数返回#Name?错误的问题
出现#Name?错误大多是参数拼写不对、引用格式错误或者控件/表不可访问导致的,按下面的步骤排查修复:
检查拼写一致性
先确认PO字段、POt表名、Contract number字段名和数据库里的完全一致,包括空格、大小写(Access不区分大小写,但别写错字)。比如别把Contract number写成ContractNumber,或者表名写成PO_Table。修正DMax的条件参数格式
你原来的写法没引用当前表单的合同号值,DMax不知道要针对哪份合同查最大PO。假设表单上用来选择合同号的控件名叫txtContractNum,表单名叫frmPOCreate:- 如果合同号是文本类型,控件源应该写成:
=Nz(DMax("[PO]","POt","[Contract number] = '" & Forms!frmPOCreate!txtContractNum & "'"), 0) + 1 - 如果合同号是数字类型,去掉单引号:
=Nz(DMax("[PO]","POt","[Contract number] = " & Forms!frmPOCreate!txtContractNum & ""), 0) + 1
- 如果合同号是文本类型,控件源应该写成:
处理空值情况
当某份合同还没有任何PO记录时,DMax会返回Null,直接加1会出错,用Nz函数把Null转为0,就能正常生成第一个编号(1)。确认表和控件的可访问性
确保POt表是当前数据库的本地表,或者链接表的链接状态正常;同时确认表单上的合同号控件确实存在,名称和你引用的完全一致。
内容的提问来源于stack exchange,提问作者Banan
相关产品推荐
相关产品推荐

