inicio sindicaci;ón

as level creative writing commentary

如何按时间自动生成类似20061023001的编号,到网络上搜索得到的结果令人十分失望!100篇文章有99篇是相同的,内容更是一字不差,见《introduction to creative writing ntu》。最令人气愤的还不是这个,而是搜索到的内容很滥,根本毫无用处。在此强烈鄙视一下那些相互转载垃圾的垃圾网站。

那么如何生成20061023001这样的编号呢。这个编号的前8位是时间,后面三位每天从001开始递增。

假设数据库中有id和number,number是文本字段,用来存储这个编号。

< % TempID=Year(now())&Right("00" & Month(now()),2)&Right("00" & Day(now()),2)&"001" sql="select * from table order by id desc" set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,3 If Left(TempID,8)=Left(rs("number"),8) Then TempID=rs("number")+1 End If %>

那其中变量TempID的初始值是今天的001号,如果最后一条记录是今天的,则在number上加1,赋值给TempID。

最后在插入的时候令number等于TempID就可以了。

exec=”insert into table(number)values(‘”&TempID&”‘)”
conn.execute exec

这是不是错了啊,因为简单到我不敢相信自己的眼睛。但是在程序中已经通过验证了。不足之处还请高手指正!!!

UPDATE@2006.10.25:感谢fisker提醒,假如数据库中还没有数据,则程序会报错,而且执行效率也有问题。现修改如下

< % TempID=Year(now())&Right("00" & Month(now()),2)&Right("00" & Day(now()),2)&"001" sql="select top 1 [number] from table order by id desc" set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,3 If not rs.eof and rs.bof Then ElseIf Left(TempID,8)=Left(rs("number"),8) Then TempID=rs("number")+1 End If %>

Response Trackback

Leave a Reply