以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:唯一序号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69290)

--  作者:yifan3429
--  发布时间:2015/6/2 16:48:00
--  求助:唯一序号
Dim lb As String = "PO#"
If e.DataRow("产品编号").StartsWith(lb) = False \'如果单据编号前缀不符
    Dim max As String
    Dim idx As Integer
    \'max = e.DataTable.Compute("Max(客户编号)","Ib = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
    max = e.DataTable.Compute("Max(产品编号)","[_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
    If max > "" Then \'如果存在最大编号
        idx = CInt(max.Substring(3,5)) + 1 \'获得最大编号的后三位顺序号,并加1
    Else
        idx = 1 \'否则顺序号等于1
    End If
    e.DataRow("产品编号") = lb & Format(idx,"00000")
End If

一个是订单明细  我会将他剪切到 制造订单  产品编号也会随之剪到 制造订单里   如果现在重新增加新的订单又会重复开始001 002这样的编码   我希望从两个表里面查找最大的值,这样保证不碰车。
求高手帮忙
[此贴子已经被作者于2015/6/2 17:05:09编辑过]

--  作者:Bin
--  发布时间:2015/6/2 16:50:00
--  
默认就是这样的

你的意思是不断号?

--  作者:大红袍
--  发布时间:2015/6/2 16:50:00
--  
Dim lb As String = "PO#"
Dim max As String
Dim idx As Integer
\'max = e.DataTable.Compute("Max(客户编号)","Ib = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
max = e.DataTable.Compute("Max(产品编号)","[_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring(3,5)) + 1 \'获得最大编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
e.DataRow("产品编号") = lb & Format(idx,"00000")

--  作者:yifan3429
--  发布时间:2015/6/2 17:06:00
--  
    新的订单   通过生成新的指令单 全部减除了

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150602170435.png
图片点击可在新窗口打开查看



下面在开始 005  应该是是直接延续上次的编号才是我想要的



图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150602170456.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2015/6/2 17:07:27编辑过]

--  作者:大红袍
--  发布时间:2015/6/2 17:12:00
--  

 哦,那你可以直接用 _Identify

 

Dim lb As String = "PO#"
e.DataRow.Save
e.DataRow("产品编号") = lb & Format(e.DataRow("_Identify"),"00000")