设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[表] 求“年份”+“记录序号”自动生成如2013-0001的数据递增格式做法

[复制链接]
1#
发表于 2013-1-13 14:35:26 | 显示全部楼层
在标准模块中写一个自定义函数,然后在追加查询,或者其他地方引用这个函数即可。

Function newNum(MyDate as Date) as string
    '示例:insert into 销售表 (销售记录编号,销售日期,销售对象)
    '             values (newNum(#2013/1/15#),#2013/1/15#,'国际贸易公司')
    Dim str as string
    Dim num as long
    '取当年最大编号
    str=Nz(Dmax("销售记录编号","销售表","year(销售日期)=" & year(MyDate)),Format(year(MyDate),"0000") & "-0000")
    '取最大号中的数字部分
    num=val(right(str,4))
    '拼接新编号字符串,并返回函数值
    newNum=Format(year(MyDate),"0000") & "-" & format(num+1,"0000")
end function
2#
发表于 2013-1-16 12:56:34 | 显示全部楼层
本帖最后由 todaynew 于 2013-1-16 13:04 编辑
大尾巴牛 发表于 2013-1-14 17:07
我总以为这个很简单的。

不是很简单,而是异常简单。

问题只在于你打算怎么折腾这个问题而已。比如你是想要对现有的记录编制一个有规律的编号?还是想要单独设置一个可以自增的编号字段?你是想在前台显式的解决新增问题?还是想在后台隐蔽的解决新增问题?由于要求的不同,处理的具体方法和手段有些许差异罢了。

如果只是想对现有记录编出一个号来,就非常的简单。假设你的数据表中至少包含这么两个字段:销售ID、销售日期,则:

select year(销售日期) & format(Dcount("*","销售表","year(销售日期)=" & year(销售日期) & " and 销售ID<=" & 销售ID ),"0000") as 销售单编号,* from 销售表

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-13 20:34 , Processed in 0.116405 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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