以文本方式查看主题

-  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
--  求助!!自动生成编号
需求如下图

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

代码出这里要如何编写,求助!

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看



--  作者:有点甜
--  发布时间: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
--  
结果如下图:

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


--  作者: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位前缀

显示结果则为:

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间: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