您好!
我们的订单系统中的订单号的生成想实现如下功能。
由录入当日年份的后两位数字
+ 月份的两位数字
+ 日期的两位数字(如果月份或日期是一位数字,则在前面补0)
+ 一位字母(当天第一个用A、第二个单用B、第三个单用C.....,第27个单用AA表示、第28个单用AB表示.......,当到达两位最大数ZZ时,下一位自动从AAA、AAB、AAC.....,AAZ、ABA、ABB......,ZZZ,以此类推,不论是增加行时自动生成的订单号,还是手动输入,订单号依次不重复、不后退、不跳跃。 如果手动输入不合规,则光标不能离开单元格,直到输入正确为止)。
例如170508A,代表2017年5月8日第一个订单;161130H,代表2016年11月30日的第八个订单。
我在Datarowadding实践中写入并保存了如下代码:
Dim mo As String = cstr(Date.today.Month)
Dim da As String = cstr( Date.today.Day)
If mo.length = 1
mo = "0" & mo
ElseIf da.length = 1
da = "0" & da
End If
Dim qz As String = cstr(Date.today.Year).SubString(2,2) & mo & da
Dim ac As Integer = 65
If e.DataRow("订单号").contains(qz)
ac = asc(right(e.DataRow("订单号"),1)) + 1
e.DataRow("订单号") = qz & chr(ac)
Else
e.DataRow("订单号") = qz & chr(ac)
End If
但是只实现了当天第一个订单的输入。
由于我再Datacolchanging 实践中输入了代码:
Select Case e.DataCol.Name
Case "订单号"
Dim dr As DataRow = e.DataTable.Find("订单号 = '" & e.NewValue & "'")
If dr IsNot Nothing Then
MessageBox.Show("此订单号已经存在!")
e.Cancel = True
ElseIf e.DataCol.Name = "订单号" Then
If e.NewValue Is Nothing Then
MessageBox.Show("订单号不允许为空!")
e.Cancel = True
End If
End If
End Select
所以再增加一行时,显示弹出对话框显示("此订单号已经存在!"), 此新增的订单号输入不成功。
请帮我指正,谢谢!
刘生