以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  还是一个以年自动编号的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=101278)

--  作者:一滴水
--  发布时间:2017/5/27 15:21:00
--  还是一个以年自动编号的问题


老师们好!

 

请教老师们一个老问题,我也查看了帮助,也看了论坛的自动编号的贴子,都没有解决问题。

 

文件编号规则是:[年号]-X号

   

1、若是表格的第一行,选当日的年号,比如是2016年的某天,编号就为[2016]-1号,以后每增加一行,编号增加1,为[2016]-2号,[2016]-3号,[2016]-999号,……[2016]-9999号到无穷大

   

2、若是新一年2017年的某天,编号为[2017]-1号,以后每增加一行,编号增加1,为[2017]-2号,[2017]-3号,[2017]-999号,……[2017]-9999号到无穷大.

 

现在问题是,所有示例中的都有固定的000格式,Format(idx,"000"),经过试验到了999,所有后面大于1000的编号都是1000了

 

现实需求中,编号确实不需要2017-001这样的固定格式,而且文件数量不确定。另外表格中没有日期列,只想根据当日所属年份来编号。

 

哪位前辈给个例子学习一下。感谢!


--  作者:有点蓝
--  发布时间:2017/5/27 16:47:00
--  
增加一个辅助序号列
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.table




--  作者:一滴水
--  发布时间:2017/5/27 19:37:00
--  

谢谢 有点蓝 老师!

 

 

    您太厉害了。

 

   我琢磨了一下午,借签别人例子,弄成功一个文件,依葫芦画,发上来您看看,估计您要笑话。代码写了好多行,一看您写的语句和例子,乐了,我也想到用一个辅助列,看来还有好多要学的东西。

 

    老师就是老师!

 

Dim d As Date = Date.Today
Dim bh As String =d.year \'取今天日期的年号
Dim max As String
Dim idx As Integer
max = e.DataTable.Compute("Max(编号)","编号 like \'" & bh & "%\' ") \'取得该月的最大编号
If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring(bh.length)) + 1 \'获得最大编号顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
e.DataRow("编号") = bh & Format(idx,"0000") \'生成20170000这种格式

 

\'以下为辅助文件编号
Dim wjbh,wjbhA,wjbh1,wjbh2,wjbh3,wjbh4,wjbh5,wjbh6,wjbh7,wjbh8 As String

wjbh = e.DataRow("编号") \'将编号赋值给变量wjbh(文件编号)

wjbhA = wjbh.Substring(0,4) \'取前4位年号

wjbh1 = wjbh.Substring(7,1) \'取最后1位编号
wjbh2 = wjbh.Substring(6,2) \'取后2位编号
wjbh3 = wjbh.Substring(5,3) \'取后3位编号
wjbh4 = wjbh.Substring(4,4) \'取后4位编号

wjbh5 = wjbh.Substring(4,3) \'取第5位\\6位\\7位编号,用于判断是否为000
wjbh6 = wjbh.Substring(4,2) \'取第5位\\6位编号,用于判断是为00
wjbh7 = wjbh.Substring(4,1) \'取第5位编号,用于判断是否为0


If wjbh5 = 000 Then
    e.DataRow("文件编号") = "[" & wjbhA & "]" & "-" & wjbh1 & "号" \'取最后1位编号,如果是20170001,变成为[]2017]-1号
ElseIf wjbh6 = 00  Then
    e.DataRow("文件编号") = "[" & wjbhA & "]" & "-" & wjbh2 & "号" \'取最后2位编号,如果是20170011,变成为[]2017]-11号
ElseIf wjbh7 = 0 Then
    e.DataRow("文件编号") = "[" & wjbhA & "]" & "-" & wjbh3 & "号" \'取最后3位编号,如果是20170111,变成为[]2017]-111号
Else
    e.DataRow("文件编号") = "[" & wjbhA & "]" & "-" & wjbh4 & "号" \'取最后4位编号,如果是20170001,变成为[]2017]1111号
End If

 


--  作者:白国栋
--  发布时间:2017/6/24 15:13:00
--  
这种的例子怎么看啊???
--  作者:有点蓝
--  发布时间:2017/6/24 15:24:00
--  
别人的例子看得懂就看,看不懂就回头看帮助吧