Foxtable(狐表)用户栏目专家坐堂 → [求助] 订单号按规则顺序输入


  共有4077人关注过本帖平板打印复制链接

主题:[求助] 订单号按规则顺序输入

帅哥哟,离线,有人找我吗?
Darcylau
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:55 积分:439 威望:0 精华:0 注册:2017/6/5 21:39:00
[求助] 订单号按规则顺序输入  发帖心情 Post By:2018/2/19 17:10:00 [只看该作者]

您好!

 

我们的订单系统中的订单号的生成想实现如下功能。

由录入当日年份的后两位数字  

+ 月份的两位数字 

+ 日期的两位数字(如果月份或日期是一位数字,则在前面补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

所以再增加一行时,显示弹出对话框显示("此订单号已经存在!"), 此新增的订单号输入不成功。

 

请帮我指正,谢谢!

 

刘生


 回到顶部
总数 26 1 2 3 下一页