以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于自动编号生产 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=45891) |
-- 作者:gaozhyu -- 发布时间:2014/2/13 9:03:00 -- 关于自动编号生产 自动编号生产方法,我想生成 yyyymm-001 后3个数一直叠加,不会因为月的变化而重新开始计数,要以年为基准,比如:日期:2014-02-13 编号:201402-001 2014-02-14 201401-002 2014-03-23 201403-003 |
-- 作者:Bin -- 发布时间:2014/2/13 9:05:00 -- 和帮助的方法一样的,只需要把日期这个条件去掉即可. |
-- 作者:gaozhyu -- 发布时间:2014/2/13 9:15:00 -- 哪块的日期条件啊? |
-- 作者:gaozhyu -- 发布时间:2014/2/13 9:16:00 -- ,"日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify") |
-- 作者:Bin -- 发布时间:2014/2/13 9:18:00 -- 日期 >= #" & fd & "# And 日期 <= #" & ld & "# And 这段不就是判断日期的嘛. |
-- 作者:gaozhyu -- 发布时间:2014/2/13 9:23:00 -- 哦,了解 |
-- 作者:gaozhyu -- 发布时间:2014/2/13 9:30:00 -- 不好用呢 |
-- 作者:Bin -- 发布时间:2014/2/13 9:33:00 -- 不会不好用,上例子. 我看看你是怎么做的./ |
-- 作者:gaozhyu -- 发布时间:2014/2/13 9:34:00 -- If e.DataCol.Name = "派工日期" Then If e.DataRow.IsNull("派工日期") Then e.DataRow("派工单编号") = Nothing Else Dim d As Date = e.DataRow("派工日期") Dim y As Integer = d.Year Dim m As Integer = d.Month Dim Days As Integer = Date.DaysInMonth(y,m) Dim fd As Date = New Date(y,m,1) \'获得该月的第一天 Dim ld As Date = New Date(y,m,Days) \'获得该月的最后一天 Dim bh As String = Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月. If e.DataRow("派工单编号").StartsWith(bh) = False \'如果编号的前6位不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(派工单编号)","[_Identify] <> " & e.DataRow("_Identify")) \'取得该月的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(7,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("派工单编号") = bh & "-" & Format(idx,"000") End If End If End If |
-- 作者:Bin -- 发布时间:2014/2/13 9:34:00 -- 请上例子..... |