以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]编号问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=114576) |
||||
-- 作者:hofen2008 -- 发布时间:2018/2/9 19:08:00 -- [求助]编号问题 按年编号,日期相同编号一样。 请老师帮忙看看示例文件里面,编号示例如何在第一列编号里面实现,谢谢。
|
||||
-- 作者:有点蓝 -- 发布时间:2018/2/9 20:27:00 -- 参考:http://www.foxtable.com/webhelp/scr/2403.htm 加多一个查找判断即可,Datacolchanged事件 If e.DataCol.Name = "时间" Then If e.DataRow.IsNull("时间") Then e.DataRow("编号") = Nothing Else Dim bh As String = Format(e.DataRow("时间"),"yyyy-") \'取得编号的8位前缀 If e.DataRow("编号").StartsWith(bh) = False \'如果编号的前8位不符 Dim dr As DataRow = e.DataTable.Find("时间=#" & e.DataRow("时间") & "# and 编号 is not null and _Identify <> " & e.DataRow("_Identify") ) If dr IsNot Nothing Then e.DataRow("编号") = dr("编号") Else Dim d As Date = e.DataRow("时间") Dim d1 As Date = new Date(d.Year,1,1) Dim d2 As Date = new Date(d.Year+1,1,1) Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(编号)","时间 >= #" & d1 & "# and 时间 < #" & d2 & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(5,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") = bh & Format(idx,"000") End If End If End If End If |
||||
-- 作者:hofen2008 -- 发布时间:2018/2/9 20:57:00 -- 谢谢老师 |