以文本方式查看主题

-  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=51479)

--  作者:yangxing
--  发布时间:2014/5/27 12:56:00
--  [求助]
 我想问关于编号自动排序的问题


图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140527125510.png
图片点击可在新窗口打开查看
我表里面的数据都删除了,再添加数据,编号为什么还接着之前的编号排下来呢?能不能让编号重新MD-0001开始呢?我只有一个表是有编号的
[此贴子已经被作者于2014-5-27 12:57:02编辑过]

--  作者:有点甜
--  发布时间:2014/5/27 14:18:00
--  
 你生成编号的代码,是怎么写的?贴出来。
--  作者:Bin
--  发布时间:2014/5/27 14:19:00
--  
你用的是什么方式?  表达式取_IDentify ?  那是正常的.因为_Identify并不会重置的.
--  作者:yangxing
--  发布时间:2014/5/28 14:51:00
--  [求助]

Dim dr As DataRow = e.DataRow
Dim pf As String
If dr.RowState <> DataRowState.Added Then \'如果不是新增行
    Return \'那么返回
ElseIf dr.IsNull("汇总时间") Then \'如果没有输入日期
    e.Cancel = True \'取消保存此行
   MessageBox.Show("必须输入日期!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
\'Else
   \'pf = Format(dr("汇总时间"),"yyMM") \'否则获得编号的前缀,两位年,两位月
End If
Dim cmd1 As New SQLCommand
Dim cmd2 As New SQLCommand
Dim Key As Integer
cmd1.C \'设置数据源名称
cmd2.C
cmd1.commandText = "Select Count(*) From [编号] Where [前缀] = \'" & pf & "\'"
If cmd1.ExecuteScalar = 0 Then \'如果编号表不存在前缀的行,那么增加一行
    cmd1.commandtext = "Insert Into 编号 (前缀, 顺序号) Values(\'" & pf & "\',1)"
    cmd1.ExecuteNonQuery
End If
cmd1.commandText = "Select [顺序号] From [编号] Where [前缀] = \'" & pf & "\'"
Do
    Key = cmd1.ExecuteScalar() \'从后台获得顺序号
    cmd2.commandText = "Update [编号] Set [顺序号] = " & (Key + 1) & " Where [顺序号] = " & Key & " And [前缀] = \'" & pf & "\'"
    If cmd2.ExecuteNonQuery() > 0 Then \'更新顺序号
        Exit Do \'更新成功则退出循环
    End If
Loop
e.DataRow("编号") =  "MD-" & Format(Key,"0000")

 

 

 我没有_identify表达式,只有编号



--  作者:有点甜
--  发布时间:2014/5/28 15:49:00
--  
 回复4楼,编号的顺序号都是递增的,删除全部行的时候,需要把编号表的顺序号设置成0,这样才能重新开始
--  作者:yangxing
--  发布时间:2014/5/28 16:22:00
--  
但是如果编号在MD-0001、MD-0002、MD-0003、MD-0004之间,我把MD-0003删除掉了,那么编号会自动重新排序吗?
--  作者:有点甜
--  发布时间:2014/5/28 16:30:00
--  
以下是引用yangxing在2014-5-28 16:22:00的发言:
但是如果编号在MD-0001、MD-0002、MD-0003、MD-0004之间,我把MD-0003删除掉了,那么编号会自动重新排序吗?

 

不会。如果要控制,比较麻烦,你可以参考这个帖子

 

http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=26913&skin=0

 


--  作者:yangxing
--  发布时间:2014/5/28 17:14:00
--  

Dim dr1 As DataRow = DataTables("sys_系统设置").find("[设置名称] = \'出库单编号位数\'")
If dr1 Is Nothing
    dr1 = DataTables("sys_系统设置").AddNew()
    dr1("设置名称") = "入库单编号位数"
    dr1("设置值") = 5
End If
 

 

这段代码什么意思?还要新建一个表吗?


--  作者:有点甜
--  发布时间:2014/5/28 17:30:00
--  

 是的,如果用这种思路,是还要新建一个表。

 

 你重点是消化一下。

[此贴子已经被作者于2014-5-28 17:30:42编辑过]

--  作者:yangxing
--  发布时间:2014/5/29 7:55:00
--  [求助]
还可以用什么方法呢?