网络编程
位置:首页>> 网络编程>> Asp编程>> 如何实现固定长度的自动编号?

如何实现固定长度的自动编号?

  发布时间:2010-06-03 10:08:00 

标签:自动编号,sql

因客户需求,要把数据库里的索引编号做成五位长度的,且能自动累加编号,我只会在SQL中使用Identity自动编号:
Create Table TestIdent
(
IDCol Int Identity (初始值, 增加值)
)
    如指定 Idenetity (5, 5),就会得5、10、15、20……什么的,可要在编号前面补零得到一个形如00025样的东西,我感到为难,请问应该怎样做呢,还是用Identity吗?

Identity是做不到的。我们先借SQL 內建的 Pubs一用,权当客户的数据库,引用下列代码,IDCol 是客户需要的编号长度,TextCol 偷梁换柱:
 Create Table TextIdent
(
  IDCol Char(5),
  TextCol Varchar(64)
)
    接着看我们的处理方法!在ASP中,调用SQL 的 Round函数,将文字类型位数转换成数字就可以了,是不是很巧妙?
<%
ConnStr = "Provider=SQLOLEDB;" _
  & "Data Source=服务器路径;" _
  & "Initial Catalog=Pubs;" _
  & "User Id=sa;" _
  & "Password=口令"
Set oConn = Server.CreateObject("Adodb.Connection")
oConn.Open ConnStr
sSQL = "select top 1 round(IDCol, 0) as IDX from TextIdent " _
  & "order by round(IDCol, 0) desc"
Set oRs = oConn.Execute(sSQL)
 
If oRs.EOF Then
  IDX = 1
Else
  IDX = oRs("IDX") + 1
End If
IDX = Right((IDX + 100000), 5)
sSQL = "insert into TextIdent (IDCol, TextCol) values " _
  & "('" & IDX & "','test_" & IDX & "')"
oConn.Execute(sSQL)
%>

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com