以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]自动编号代码写法  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1247)

--  作者:googbr
--  发布时间:2008/11/26 18:59:00
--  [求助]自动编号代码写法
在表的DataRowAdding事件中如何写代码实现指定格式的自动编号呢?

以下内容为程序代码:

1 dim dt as string = “ywbh”& “-”& Format(Date.Today(),"yymmdd") & "-" & Format(DataTables("表A").DataRows.Count,"000")
2
3 e.DataRow("第二列") = dt
4


这种编码方式,如果删掉前面的行,会出现重复编号。

我想实现这样的“ywbh-081126-001”、“ywbh-081126-002”……

当日期代码变化后(如:从081126变为081127)后边的编号段则重新由001开始计数。

要求删除一个号码不能引起其他号码变化、删除后如果新增编号自动用同日的编号中尾数最大值+1比如同日最大的是ywbh-081126-002,则新增的应该是ywbh-081126-003

count可以带条件参数吗?

[此贴子已经被作者于2008-11-26 19:00:15编辑过]

--  作者:gdtgl
--  发布时间:2008/11/26 20:09:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文件夹.rar


--  作者:ybil
--  发布时间:2008/11/26 21:43:00
--  

来个简单点:

Dim T1,T2 As String
T1 = "ywbh-" & Format(Date.today,"yyMMdd") & "-"
T2 = "[编号] like \'" & T1 & "*\'and [_Identify] < " & e.DataRow("_Identify")
Dim dr As DataRow = e.DataTable.Find(T2,"_Identify DESC")

If dr is Nothing then
    e.DataRow("编号") = T1 & "001"
Else
    e.DataRow("编号") = T1 & Format(Cint(dr("编号").substring(12,3))+1,"000")
End If