以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]自动编号 已上传附件 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=26556) |
||||
-- 作者:pfj511 -- 发布时间:2012/12/7 21:42:00 -- [求助]自动编号 已上传附件
项目名称 + 年份 + 编号
例如 HH12-1 2012年第1份 HH12-2 2012年第2份 HH12-3 2012年第3份 HH13-1 2013年第1份 HH13-2 2013年第2份 HH14-1 2013年第1份
目前没有考虑到跳年编号问题; 简单用表达式: 项目编号 +SubString(Convert(委托日期,\'System.String\'),3,2)+\'-\' + Convert([_Identify], \'System.String\')
编号依据录入日期自动生成,编号依次+1 跳过年份编号归1 重新递加
如此请问 表达式 或者代码 如何实现? 感谢!
[此贴子已经被作者于2012-12-9 22:37:26编辑过]
|
||||
-- 作者:lin_hailun -- 发布时间:2012/12/8 10:10:00 -- 这种的话,需要通过代码去完成的。可以先参考一下帮助。不行的话,就上传例子帮你实现。 http://www.foxtable.com/help/topics/2403.htm |
||||
-- 作者:pfj511 -- 发布时间:2012/12/8 23:50:00 -- 自动编号 样品编号 委托日期
TH12-1 TH 2012-2-15 TH12-2 TH 2012-5-25 TH13-1 TH 2013-1-5 TH13-2 TH 2013-3-9 TH14-1 TH 2014-5-6 想要实现如上效果 逢跳年 编号 归1 不跳年 编号+1 If e.DataCol.Name = "委托日期" Then If e.DataRow.IsNull("委托日期") Then e.DataRow("自动编号") = Nothing Else Dim y As String = Format(e.DataRow("委托日期"),"yyyy") \'取得编号的年号 Dim bh As String ="样品编号" & y.SubString(3,2)\'取得编号的前缀 Dim max As String=e.DataTable.Compute("Max(自动编号)","委托日期 = #" & e.DataRow("委托日期") & "#") \'取得该年的最大自动编号 Dim idx As Integer Dim va As String() = CStr(max).Split("-") If e.DataRow("自动编号").StartsWith(bh) = False \'如果编号的前缀不符 idx = 1 \'否则顺序号等于1 Else idx = CInt(va(1)) + 1 \'获得最大编号的后三位顺序号,并加1 e.DataRow("自动编号") = bh & "-" & Format(idx,"0000") End If End If End If 代码哪里写错了 提示 调用目标发生异常 高手帮忙看下 ,谢谢 了 ! 另外 代码 里面 我 貌似 少加了行 代码 ,同时要 判断 委托日期 和 样品编号 不为空 才能 运行代码
[此贴子已经被作者于2012-12-8 23:58:42编辑过]
|
||||
-- 作者:lin_hailun -- 发布时间:2012/12/9 0:14:00 -- 楼主,这样吧,你做一个简单的例子,输入少量数据,上传上来。这样几分钟就可以解决了。 |
||||
-- 作者:lin_hailun -- 发布时间:2012/12/9 0:45:00 -- 你这样试一下吧。 If e.DataCol.Name = "委托日期" Then If e.DataRow.IsNull("委托日期") Then e.DataRow("自动编号") = Nothing Else Dim y As String = Format(e.DataRow("委托日期"),"yyyy") \'取得编号的年号 Dim bh As String = e.DataRow("样品编号") & y.SubString(3,2)\'取得编号的前缀 Dim max As String=e.DataTable.Compute("Max(自动编号)","自动编号 like \'" & bh & "*\'") \'取得该年的最大自动编号 Dim idx As Integer If max = "" \'如果编号的前缀不符 idx = 1 \'否则顺序号等于1 Else Dim va As String() = CStr(max).Split("-") idx = CInt(va(1)) + 1 \'获得最大编号的后三位顺序号,并加1 e.DataRow("自动编号") = bh & "-" & Format(idx,"0000") End If End If End If |
||||
-- 作者:pfj511 -- 发布时间:2012/12/9 16:48:00 --
上传了附件 帮忙看下 谢谢! |
||||
-- 作者:lin_hailun -- 发布时间:2012/12/10 10:14:00 -- Ok了,请看附件。
|
||||
-- 作者:pfj511 -- 发布时间:2012/12/10 21:50:00 -- 非常感谢! 林你太厉害了! |