以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助!!自动生成编号 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=105823) |
-- 作者:kmbn -- 发布时间:2017/8/26 22:55:00 -- 求助!!自动生成编号 需求如下图 代码出这里要如何编写,求助!
|
-- 作者:有点甜 -- 发布时间:2017/8/27 11:07:00 -- 没看懂你的问题,这个意思? http://www.foxtable.com/webhelp/scr/0362.htm
|
-- 作者:kmbn -- 发布时间:2017/8/27 17:13:00 -- 想格式化成 20170826221416-001 后面的001可以显示,但是前面的20170826221416字样弄不成功
|
-- 作者:有点甜 -- 发布时间:2017/8/27 17:14:00 --
format(e.DataRow("消费时间"), "yyyyMMddHHmmss")
|
-- 作者:kmbn -- 发布时间:2017/8/27 17:15:00 -- Dim bh As String = Format( e.DataRow("消费时间"),"yyyyMMddHHmmss" ) 这样设置也不能显示
|
-- 作者:有点甜 -- 发布时间:2017/8/27 17:15:00 -- 全部代码贴出来,或者实例发上来测试。
代码没问题。 |
-- 作者:kmbn -- 发布时间:2017/8/27 17:18:00 -- 结果如下图: |
-- 作者:kmbn -- 发布时间:2017/8/27 17:19:00 -- 老师,代码如下: If e.DataCol.Name = "消费时间" Then If e.DataRow.IsNull("消费时间") Then e.DataRow("消费单据号") = Nothing Else Dim bh As String = Format( e.DataRow("消费时间") ,"yyyyMMddHHmmss") \'取得编号的14位前缀 If e.DataRow("消费单据号").StartsWith(bh) = False \'如果编号的前14位不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(消费单据号)","消费时间 = #" & e.DataRow("消费时间") & "# ") \'取得该天的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(14,3)) + 1 \'获得最大编号的后3位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("消费单据号") =bh & "-" & Format(idx,"000") \'bh & Format(idx,"000") End If End If End If |
-- 作者:kmbn -- 发布时间:2017/8/27 17:23:00 -- 如果代码改为: Dim bh As String = Format( e.DataRow("消费时间") ) \'取得编号的14位前缀 显示结果则为:
|
-- 作者:有点甜 -- 发布时间:2017/8/27 17:32:00 -- If e.DataCol.Name = "消费时间" Then If e.DataRow.IsNull("消费时间") Then e.DataRow("消费单据号") = Nothing Else Dim bh As String = Format( e.DataRow("消费时间") ,"yyyyMMddHHmmss") \'取得编号的14位前缀 Dim d As Date = e.DataRow("消费时间").Date Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(消费单据号)","消费时间 >= #" & d & "# and 消费时间 < #" & d.AddDays(1) & "#") \'取得该天的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(bh.length+1,3)) + 1 \'获得最大编号的后3位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("消费单据号") =bh & "-" & Format(idx,"000") \'bh & Format(idx,"000") End If End If |