以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何实现在增加行时“编号”列自动增加固定位数且有代码的编号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184178)

--  作者:13315253800
--  发布时间:2022/11/27 11:12:00
--  如何实现在增加行时“编号”列自动增加固定位数且有代码的编号

蓝老师您好!请教如何实现在增加行时“编号”列自动增加固定位数且有代码的编号

就像表达式列如下表达式公式的效果

\'CYS\' + SubString(\'0000\', 1, 4 - Len(Convert([_Identify],\'System.String\'))) + Convert([_Identify], \'System.String\')

因“编号”是关联列,不能用表达式格式,我在表属性增加行DataRowAdding事件中用代码

e.DataRow("编号") = e.DataTable.Compute("Max(编号)") + 1

e.DataRow("编号") ="CYS" & "-" & e.DataTable.Compute("Max(编号)") + 1

均为实现自动增加固定位数且有代码的编号,敬请老师指导!


--  作者:有点蓝
--  发布时间:2022/11/27 20:13:00
--  
参考:http://www.foxtable.com/webhelp/topics/2403.htm
--  作者:13315253800
--  发布时间:2022/11/27 20:34:00
--  
蓝老师,我想不设置“类别”列,只设“编号”列,就是的前面有固定的“GYS”三个字母,编码三位,如“GYS001”,想在增加行DataRowAdding事件设置。帮助中没有此类可参考的代码,能实现吗?
--  作者:有点蓝
--  发布时间:2022/11/27 20:49:00
--  
用法都一样的啊,建议还是先仔细阅读2落得帮助吧。看帮助要学习的是帮助里处理问题的思维和逻辑,而不是就为了抄代码。

帮助里别人是怎么处理有类别的编号的?不管是日期、类别列还是固定的字母,在进行编号+1 的时候都要先把这些类别字母去掉呀,看帮助的用法

1、按月的
idx = CInt(max.Substring(7,3)) + 1 \'获得最大编号的后三位顺序号,并加1
2、按日的
idx = CInt(max.Substring(9,3)) + 1 \'获得最大编号的后三位顺序号,并加1
3、按类别的
 idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1


所以处理问题的方法都一样的!
dim max as string = e.DataTable.Compute("Max(编号)")
dim idx as integer = CInt(max.Substring(3,3)) + 1 \'获得最大编号的后三位顺序号,并加1
e.DataRow("编号") ="CYS" & "-" & Format(idx,"000")

--  作者:13315253800
--  发布时间:2022/11/27 21:12:00
--  
蓝老师讲的细致透彻,非常感谢!