以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [分享]自动生成编号的问题——实例分享 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28937) |
-- 作者:xvkewen -- 发布时间:2013/2/22 23:45:00 -- [分享]自动生成编号的问题——实例分享 以下这段代码是自动生成编号末尾的数字的,但"Max(单据编号)"我实在不明白是什么意思?让我很不解
大侠们帮帮忙,帮忙解释一下自动生成编号结尾的数字的原理是什么?那个Max函数不是只能针对整型数据使用吗?那个单据编号为字符型,为何也能用Max?
在大家的帮助下,尤其是程版主的指点下,终于完成这个自动编号的问题了;但是我没有用MAX来做,因为对MAX比较字符串还是不太明白,我是用datarow的select获得记录总数做为初始编号,如果一直用记录数总数来编号的话,在有删除行的情况下,会出现重复编号,所以再用FIND倒序排序的方法获得当前的最大编号加1进行编号;觉得这种自动编号方法与帮助里略有不同,所以为感谢谢大家的帮助,特将此实例发出与大家共同分享;如果我的代码或逻辑还有哪些不足的地方欢迎大家指出;
Dim max As String Dim idx As Integer Dim flt As String flt = "工程代码 = \'"& e.DataRow("工程代码") & "\' And 制单日期 >= #" & fd & "# And 制单日期 <= #" & ld & "#" max = e.DataTable.Compute("Max(单据编号)",flt) \'取得该月的相同工程代码的最大单据编号 If max > "" Then \'如果存在最大单据编号 idx = CInt(max.Substring(12,4)) + 1 \'获得最大单据编号的后四位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If [此贴子已经被作者于2013-2-24 16:01:24编辑过]
|
-- 作者:程兴刚 -- 发布时间:2013/2/23 1:10:00 -- 截止到本行当月制单日期的记录数! |
-- 作者:lin_hailun -- 发布时间:2013/2/23 9:25:00 -- max用于字符串的时候,会按照一个规则来比较各位对应字符大小的。可以理解成等同于数值的比较。 |
-- 作者:xvkewen -- 发布时间:2013/2/23 12:28:00 -- 有没有Max用于比较字符例子呀?发出来参考一下呀;谢谢了 |
-- 作者:lin_hailun -- 发布时间:2013/2/23 14:14:00 -- 以下是引用xvkewen在2013-2-23 12:28:00的发言: 有没有Max用于比较字符例子呀?发出来参考一下呀;谢谢了 max是聚合函数,是用于统计的。没有单独的max函数。 |
-- 作者:xv1234 -- 发布时间:2013/2/24 16:07:00 -- 学习了,谢谢楼主 |
-- 作者:卧美吻花 -- 发布时间:2013/2/25 3:16:00 -- 收藏先,! |
-- 作者:lin_hailun -- 发布时间:2013/2/25 8:35:00 -- 其实过程都一样,能解决,就行了。 |