Office中国论坛/Access中国论坛

标题: 关于自动编号 [打印本页]

作者: jasonxiao2006    时间: 2008-8-26 16:40
标题: 关于自动编号
我想根据设备的名称和型号来对设备进行编号,格式为XXX-XXX-XXX。前面三位为名称,取自“设备名称”表中的“名称ID”字段,中间三位为型号,取自“设备型号”表中的“型号ID”,后面三位为序号,根据“设备基本信息”表中同名称同型号的设备顺序进行编号。当我在“新增设备”窗体中输入设备名称和型号后,系统自动生成一个新的编号。我的想法是:当我输完设备型号后,在其“更新后”事件中获取所输入设备的名称和型号所对应的“名称ID”和“型号ID”,再判断“设备基本信息”表中前六位相同的记录共有几条,如有五条,则后三位为006。
请问各位老师要如何编写代码?(“新增设备”窗体中有设备编号、设备名称、设备型号等控件)

[ 本帖最后由 jasonxiao2006 于 2008-8-26 16:42 编辑 ]
作者: tmtony    时间: 2008-8-27 07:35
在更新后事件中取
从表中用dmax函数 取 同设备名称 同设备型号 的最大编号, 用right函数取其后面三位,然后用val函数变成数字,再+1
再用format(值,"000") 转成三位编码,再与前面的设备名称 型号合并成一个编码就可以了
作者: jasonxiao2006    时间: 2008-8-27 10:17
tmtony,我按您的建议试写了如下代码,但提示出错,烦请你帮我看看!
Private Sub 设备型号_AfterUpdate()
Dim CodeMax As String
Dim SeriesId As String
Dim NewCode As String
Dim NameId As String
Dim TypeId As String
CodeMax = DMax("[设备编号]", "设备基本信息", "[设备名称]=FORMS![新增设备]![设备名称]" And "[设备型号]=FORMS![新增设备]![设备型号]")
'获取同名同型设备的最大编号
SeriesId = Val(Right(CodeMax, 3)) '将其转换为数字
SeriesId = SeriesId + 1 '加上1
NewCode = Format(Forms![新增设备]![设备名称], "000") & Format(Forms![新增设备]![设备型号], "000") & Format(SeriesId, "000")
Me.设备编号 = NewCode
Me.设备编号.Requery
End Sub
作者: jasonxiao2006    时间: 2008-8-28 09:18
Dmax()是不是只能求出数值型的最大值啊,系统一直提示错误!
作者: hi-wzj    时间: 2008-8-28 09:57
如果目标表中无该设备+型号的记录,则CodeMax就取不出来,您要增加判断。如果有则。。。。无则 设备名称类型001




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3