以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]自动编号问题 (http://foxtable.net/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 -- 已解决!谢谢有点色!今天女王节,你要悠着点! |