GetOrderID函数

GetOrderID函数用于生成订单编号
一开始我是直接在Edit函数中编写代码生成订单编号的,后来之所以将生成编号的代码单独提出来做成一个函数,是考虑到用户可能需要直接在Foxtable输入订单。

编号格式为两位年两位月和两位日,后接三位顺序号。


GetOrderID函数代码为:

Static Lastbh As String '通过这个Static变量可以访问上一次生成的编号,避免重复Compute
Dim
prefix As String = Format(Date.now,"yyMMdd") '本次编号前缀
If
Lastbh >"" AndAlso Lastbh.SubString(0,6) = prefix Then '如果上一次生成编号的前缀和本次相同
    Lastbh = prefix & Format(Cint(Lastbh.SubString(6,3)) + 1,"000")
'在上次编号的基础上递增1
Else

    '取数据表中同前缀的最大编号
    Dim max As String=DataTables("订单").SQLCompute("Max(订单编号)","订单编号 like '" & prefix & "%'")
    If max = "" Then '如果不存在同前缀的编号
        Lastbh  = prefix & "001"  '同前缀的第一个编号
    Else
        Lastbh = prefix & Format(CInt(max.SubString(6,3)) + 1,"000") '在同前缀最大编号的基础上递增1
    End
If
End
If
Return
Lastbh

注意上述代码中,Lastbh是一个静态变量,每次执行都可以通过此变量获取上一次生成的编号,这样处理的好处是,不用次次执行SQLCompute生成新的编号,提高了效率。

关于静态变量,参考:使用静态变量


本页地址:http://www.foxtable.com/mobilehelp/topics/0126.htm