以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何实现(日期+本年流水号)订单号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95195)

--  作者:TP
--  发布时间:2017/1/12 17:55:00
--  [求助]如何实现(日期+本年流水号)订单号
如图,想设计一个(日期+本年流水号)的订单号,如何在新增一行时自动显示?
如:2017年1月1日新增一个订单,显示为201701010001(前八位为当日日期,后四位为本年流水号,注意是本年流水号
无论2017年产生多少订单,到了2018年1月1日编号后四位又以0001开始
https://pan.baidu.com/s/1boDdUJt图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/1/12 18:05:00
--  

 

[此贴子已经被作者于2017/1/12 18:05:38编辑过]

--  作者:有点色
--  发布时间:2017/1/12 18:10:00
--  

DataRowAdded事件

 

Dim max As String
Dim idx As Integer
max = e.DataTable.Compute("Max(编号)","substring(编号,1,4) >= \'" & Date.Today.Year & "\'") \'取得该月的最大编号
If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring(8,4)) + 1 \'获得最大编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
e.DataRow("编号") = format(Date.Today, "yyyyMMdd") & Format(idx,"0000")


--  作者:TP
--  发布时间:2017/1/12 18:30:00
--  
我是新手,请帮忙,感谢啦

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.29.1
错误所在事件:表,表A,DataRowAdded
详细错误信息:
调用的目标发生了异常。
函数参数中的类型不匹配: Substring(),参数 1,应为 System.String。

[此贴子已经被作者于2017/1/12 20:03:50编辑过]

--  作者:有点色
--  发布时间:2017/1/12 20:09:00
--  
 编号列,改成字符类型,不要用数值列。
--  作者:TP
--  发布时间:2017/1/12 20:32:00
--  
OK了,太感谢啦
--  作者:TP
--  发布时间:2017/1/14 18:29:00
--  
已经会运用了,但是想举一反三,如果可以的话,可不可以把每句话的意思和意图写下来,作为日后学习的参考