以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [分享]自动生成编号的问题——实例分享  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=28937)

--  作者:xvkewen
--  发布时间:2013/2/22 23:45:00
--  [分享]自动生成编号的问题——实例分享
以下这段代码是自动生成编号末尾的数字的,但"Max(单据编号)"我实在不明白是什么意思?让我很不解

大侠们帮帮忙,帮忙解释一下自动生成编号结尾的数字的原理是什么?那个Max函数不是只能针对整型数据使用吗?那个单据编号为字符型,为何也能用Max?

在大家的帮助下,尤其是程版主的指点下,终于完成这个自动编号的问题了;但是我没有用MAX来做,因为对MAX比较字符串还是不太明白,我是用datarow的select获得记录总数做为初始编号,如果一直用记录数总数来编号的话,在有删除行的情况下,会出现重复编号,所以再用FIND倒序排序的方法获得当前的最大编号加1进行编号;觉得这种自动编号方法与帮助里略有不同,所以为感谢谢大家的帮助,特将此实例发出与大家共同分享;如果我的代码或逻辑还有哪些不足的地方欢迎大家指出;


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:foxtable自动编号.table




If
e.DataRow("单据编号").StartsWith(bh) = False \'如果单据编号前缀不符
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
--  
 其实过程都一样,能解决,就行了。