Foxtable(狐表)用户栏目专家坐堂 → 还是一个以年自动编号的问题


  共有2483人关注过本帖树形打印复制链接

主题:还是一个以年自动编号的问题

帅哥哟,离线,有人找我吗?
一滴水
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:37 积分:737 威望:0 精华:0 注册:2008/9/14 16:02:00
还是一个以年自动编号的问题  发帖心情 Post By: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这样的固定格式,而且文件数量不确定。另外表格中没有日期列,只想根据当日所属年份来编号。

 

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


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/5/27 16:47:00 [只看该作者]

增加一个辅助序号列
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.table




 回到顶部
帅哥哟,离线,有人找我吗?
一滴水
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:37 积分:737 威望:0 精华:0 注册:2008/9/14 16:02:00
  发帖心情 Post By: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

 


 回到顶部
帅哥哟,离线,有人找我吗?
白国栋
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:176 积分:1689 威望:0 精华:0 注册:2017/3/26 10:20:00
  发帖心情 Post By:2017/6/24 15:13:00 [只看该作者]

这种的例子怎么看啊???

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/24 15:24:00 [只看该作者]

别人的例子看得懂就看,看不懂就回头看帮助吧

 回到顶部