以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 自动编号没变号 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=144854) |
-- 作者:lgz518 -- 发布时间:2019/12/31 15:09:00 -- 自动编号没变号 Dim bh As String = "CGDD-" & Format(Date.Today(),"yyyyMMdd") Dim flt = "采购单号 like \'" & bh & "%\'" Dim max = e.DataTable.Compute("Max(采购单号)",flt) Dim idx As Integer If max > "" Then \'如果存在最大单据编号 idx = CInt(max.Substring(bh.Length,4)) + 1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("采购单号") = bh & Format(idx,"-0000") 上面代码在内表关联,执行没有变号,一直就是CGDD-20191231-0001, 1.要怎么处理? 2.如何在多并发,多人录入采购单,能不重复,及如果删除后能”废号“可以再利用?
|
-- 作者:有点蓝 -- 发布时间:2019/12/31 15:21:00 -- 学会调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm Dim bh As String = "CGDD-" & Format(Date.Today(),"yyyyMMdd") Dim flt = "采购单号 like \'" & bh & "%\'" Dim max = e.DataTable.Compute("Max(采购单号)",flt) msgbox(max) \'这里显示什么? Dim idx As Integer If max > "" Then \'如果存在最大单据编号 idx = CInt(max.Substring(bh.Length,4)) + 1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("采购单号") = bh & Format(idx,"-0000") 如果考虑并发,就需要有一个统一的地方来取编号,才不会导致编号重复,如果使用服务端的方式处理,参考:http://www.foxtable.com/webhelp/topics/3008.htm,如果使用存储过程处理,可以看看:http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=61848&replyID=&skin=1 至于断号重用,需要添加一个断号表,把被删除的编号记录下来,在生成编号的时候,先到这个表查询获取最早的编号,如果没有再按照上面1/2的方法生成新的编号 |