以文本方式查看主题

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

--  作者:pengdx123
--  发布时间:2017/3/8 14:23:00
--  [求助]自动编号问题
表A为采购订单表(筛选状态为:“增新”or“审核”),当前行状态为:“新增”,审核后,为:“待付款”状态,此状态不在筛选后的采购订单表中,问题是:“待付款”行的订单编号是存在的假设为A005,但是如果这时在采购订单表中添加订单的话,自动编号也是A005,就是说在筛选的订单表中只能根据筛选后的结果来编号(我是参考的帮助自动编号这一章),一但订单被提交了,同一天再建订单的话,编号会和提交过的订单编号重复!有没有解决的办法?我是新手!
If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期"Then
        e.DataRow("编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("日期"),"yyyyMMdd"\'取得编号的8位前缀
        If e.DataRow("编号").StartsWith(bh) = False \'如果编号的前8位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大编号
            If max > "" Then \'如果存在最大编号
                idx = CInt(max.Substring(9,3)) + 1 \'获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 \'否则顺序号等于1
            End If
            e.DataRow("编号") = bh & "-" & Format(idx,"000")
        End If
    End 
If

End
 If
这是复制帮助里的,If max > "" Then 这里有没有办法把提交后的订单编号也能找出来?要不然的话上一笔订单提交后,再添加订单的话,编号就会与上一笔订单相同!

--  作者:有点色
--  发布时间:2017/3/8 14:29:00
--  

 

e.DataTable.Compute是根据你加载的数据查找的。如果希望根据数据库所有数据查找,你可以把改成SqlCompute

 


--  作者:pengdx123
--  发布时间:2017/3/8 14:36:00
--  
改了之后,提示:“#号附近有错误”?
--  作者:pengdx123
--  发布时间:2017/3/8 14:38:00
--  
已解决!谢谢有点色!今天女王节,你要悠着点!