以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]自动编号的插入问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=29305)

--  作者:xvkewen
--  发布时间:2013/3/4 11:58:00
--  [求助]自动编号的插入问题
如果我有个自动编号从F-01自动编到F-09; 假如我从F-05前插入一行,将新行编号改为F-05,后面的编号依次加1; 这个效果怎么做?
 
 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:foxtable自动编号.table


--  作者:狐狸爸爸
--  发布时间:2013/3/4 12:01:00
--  

不要这样做,编号没有必要可以追求连续。

编号就是某一行的唯一标记,就像人的身份证号码,不能因为某个人的过世,其他人的身份证号码就要重新编过。

[此贴子已经被作者于2013-3-4 12:00:40编辑过]

--  作者:xvkewen
--  发布时间:2013/3/4 12:37:00
--  

但是我的自动编号还有一个用途,是用来设别生产流程顺序的(排序);如果在生产过程中发现此流程不合理,或都需要在中间增加一道工序;这样原来生产流程就不对了;因为以目前编号的方法新增的流程就在最后,而这不是我想要的;

 

这个问题该怎么解决?


--  作者:狐狸爸爸
--  发布时间:2013/3/4 14:17:00
--  

呵呵,简单:

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目13.table


--  作者:lsy
--  发布时间:2013/3/4 14:20:00
--  
你这样做,不妥,自动编号不能人为干预,否则没有客观性,还会造成引用错误,如果你的流程常变,不如用序列填充,改起来方便。
--  作者:xvkewen
--  发布时间:2013/3/5 15:25:00
--  

5楼说的问题确实存在,但在我的项目里用上狐爸的方法,再稍做修改 ;这个问题就不存在了;


--  作者:xvkewen
--  发布时间:2013/3/5 16:06:00
--  

狐爸 ,虽然用了你的方法把问题解决了,但是我还不懂你以下代码的逻辑,能不能帮忙解释一下呀?与帮助介绍的自动编号的方法有什么不同?劳驾了

 

 

Dim cnt As Integer =1 [定义个初始编号]
        If e.NewValue > "" Then [如果有新值]
            For Each dr As DataRow In DataTables("表A").Select("类别 = \'" & e.NewValue & "\'","_SortKey")
                dr("编号") = e.NewValue & "-" & Format(cnt,"000")
                cnt = cnt + 1
            Next
        End If
        cnt = 1
        If e.OldValue > "" Then 【如果存在旧值】
            For Each dr As DataRow In DataTables("表A").Select("类别 = \'" & e.OldValue & "\'","_SortKey")
                dr("编号") = e.OldValue & "-" & Format(cnt,"000")
                cnt = cnt + 1
            Next
        End If


--  作者:狐狸爸爸
--  发布时间:2013/3/5 16:09:00
--  
就是分别针对旧类别和新类别的所有行,从1开始重新编号。