以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 按年份自动编号 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=94895) |
-- 作者:txtxtttt1919 -- 发布时间:2017/1/4 18:34:00 -- 按年份自动编号 帮助里的自动编号有按月自动编号的,按日自动编号的,按类型自动编号的,但没有按年自动编号的,举的例子代码看不太懂,哪位老师能直接写个按年自动编号的代码? |
-- 作者:有点色 -- 发布时间:2017/1/4 19:08: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 fd As Date = New Date(y,1,1) Dim bh As String = Format(d,"yyyy") \'生成编号的前6位,4位年,2位月. If e.DataRow("编号").StartsWith(bh) = False \'如果编号的前6位不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(编号)","日期 >= #" & fd & "# And 日期 < #" & fd.AddYears(1) & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该月的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(bh.Length,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") = bh & "-" & Format(idx,"000") End If End If End If |
-- 作者:txtxtttt1919 -- 发布时间:2017/1/4 19:16:00 -- 很好用,谢谢呀。但max = e.DataTable.Compute("Max(编号)","来文日期 >= #" & fd & "# And 来文日期 < #" & fd.AddYears(1) & "# And [_Identify] <> " & e.DataRow("_Identify")) 这句代码应该怎么看? |
-- 作者:有点色 -- 发布时间:2017/1/4 19:20:00 -- 根据下面的条件,取出最大的编号。
日期 >= #2017-1-1# and 日期 <= #2018-1-1# and 等于当前行 |
-- 作者:txtxtttt1919 -- 发布时间:2017/1/4 19:20:00 -- 代码好像有点问题,只能生成001呀 |
-- 作者:有点色 -- 发布时间:2017/1/4 19:23:00 -- 改一下
If e.DataCol.Name = "日期" Then |
-- 作者:txtxtttt1919 -- 发布时间:2017/1/4 19:27:00 -- 好像还是不行,只能生成001 |
-- 作者:txtxtttt1919 -- 发布时间:2017/1/4 19:46:00 -- 好像还是不行,只能生成001 |
-- 作者:txtxtttt1919 -- 发布时间:2017/1/4 19:48:00 -- 删除了之后可以生成,重置列没用。。。。,不过还是可以用了,谢谢 |
-- 作者:有点色 -- 发布时间:2017/1/5 9:44:00 -- 以下是引用txtxtttt1919在2017/1/4 19:48:00的发言:
删除了之后可以生成,重置列没用。。。。,不过还是可以用了,谢谢
重置列,你要重置的是日期列。 |