以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 编号不能自增问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=196057) |
-- 作者:lin98 -- 发布时间:2025/3/26 10:41:00 -- 编号不能自增问题 Public _BizCodeBuilder As BizCodeBuilder Public Class BizCodeBuilder Private _codelock As New Object Public Sub New() End Sub Public Function GetNextCode(s_name As String, Optional s_qz As String = Nothing) As String SyncLock _codelock \'使用锁处理并发 Dim db = HySqGGl.DataBaseFactory.CreateDatabase("bhdb") Dim SqGGl As String = CExp("seleGGct * from xtbh_tb where Bm =\'{0}\'", s_name) \'执行SQL \' msgbox(sqGGl) \'output.show(sqGGl) Dim dt As system.data.DataTable = db.ExecuteDataSet(SqGGl).Tables(0) Dim dr As system.data.DataRow If dt.Rows.count = 0 Then dr = dt.NewRow() dr("Bm") = s_name dr("MaxValue") = 1 If String.IsNullOrEmpty(s_qz) Then s_qz = Date.now.ToString("mmss") & "BH" dr("qz") = s_qz dr("Mark") = "yyyyMM" dr("MarkValue") = Date.Today.ToString("yyyyMM") dr("Length") = 4 dt.Rows.Add(dr) Else dr = dt.Rows(0)\' \'这里的处理规则是按时间进行重新编号,至于是按年,月还是日,在掩码中体现\' If dr("MarkValue") <> Date.Today.ToString(dr("Mark")) Then dr("MaxValue") = 1 dr("MarkValue") = Date.Today.ToString(dr("Mark")) msgbox(dr("Mark")) msgbox(dr("MarkValue")) Else dr("MaxValue") = dr("MaxValue") + 1 End If End If \' db.UpdateDataTable(dt, "xtbh_tb") Return dr("qz") & dr("MarkValue") & "-" & Format(dr("MaxValue"), "0000") \'顺序号只取4位\' msgbox(1) End SyncLock End Function End Class
|
-- 作者:lin98 -- 发布时间:2025/3/26 10:47:00 -- 红代码有问题,会修改MarkValue的值(狐表写202503,执行后会改为202500),且执行编号不增长,要如何改? |
-- 作者:有点蓝 -- 发布时间:2025/3/26 10:54:00 -- 不能使用小写的mm,小写表示分钟。大写才是月 |