设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2070|回复: 4
打印 上一主题 下一主题

[模块/函数] 关于自动编号

[复制链接]
跳转到指定楼层
1#
发表于 2008-8-26 16:40:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想根据设备的名称和型号来对设备进行编号,格式为XXX-XXX-XXX。前面三位为名称,取自“设备名称”表中的“名称ID”字段,中间三位为型号,取自“设备型号”表中的“型号ID”,后面三位为序号,根据“设备基本信息”表中同名称同型号的设备顺序进行编号。当我在“新增设备”窗体中输入设备名称和型号后,系统自动生成一个新的编号。我的想法是:当我输完设备型号后,在其“更新后”事件中获取所输入设备的名称和型号所对应的“名称ID”和“型号ID”,再判断“设备基本信息”表中前六位相同的记录共有几条,如有五条,则后三位为006。
请问各位老师要如何编写代码?(“新增设备”窗体中有设备编号、设备名称、设备型号等控件)

[ 本帖最后由 jasonxiao2006 于 2008-8-26 16:42 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2008-8-27 07:35:44 | 只看该作者
在更新后事件中取
从表中用dmax函数 取 同设备名称 同设备型号 的最大编号, 用right函数取其后面三位,然后用val函数变成数字,再+1
再用format(值,"000") 转成三位编码,再与前面的设备名称 型号合并成一个编码就可以了
3#
 楼主| 发表于 2008-8-27 10:17:51 | 只看该作者
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
4#
 楼主| 发表于 2008-8-28 09:18:36 | 只看该作者
Dmax()是不是只能求出数值型的最大值啊,系统一直提示错误!
5#
发表于 2008-8-28 09:57:57 | 只看该作者
如果目标表中无该设备+型号的记录,则CodeMax就取不出来,您要增加判断。如果有则。。。。无则 设备名称类型001
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-3 05:28 , Processed in 0.125292 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表