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生成新的编号,提高了效率。
关于静态变量,参考:使用静态变量