以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按系统默认日期生自动生成编号要怎么改代码?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=58435)

--  作者:漂亮美眉vszh
--  发布时间:2014/10/16 16:35:00
--  按系统默认日期生自动生成编号要怎么改代码?

要自动生成上述编号,代码更加简单:

If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("编号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("日期"),"yyyyMMdd") \'取得编号的8位前缀
        If e.DataRow("编号").StartsWith(bh) = False \'如果编号的前8位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大编号
            If max > "" Then \'如果存在最大编号
                idx = CInt(max.Substring(9,3)) + 1 \'获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 \'否则顺序号等于1
            End If
            e.DataRow("编号") = bh & "-" & Format(idx,"000")
        End If
    End
If
End
If


--  作者:漂亮美眉vszh
--  发布时间:2014/10/16 16:36:00
--  

括号空白的地方等于编号


--  作者:狐狸爸爸
--  发布时间:2014/10/16 16:45:00
--  

你要懂得变通,既然可以根据输入的日期自动生成编号,那么你的问题就是:如何自动输入当前日期。

答案:

http://www.foxtable.com/help/topics/0630.htm

 


--  作者:有点甜
--  发布时间:2014/10/16 17:19:00
--  

DateRowAdding事件,代码

 

Dim bh As String = Format(Date.Today, "yyyyMMdd")
Dim max As String = e.DataTable.Compute("max(编号)", "编号 like \'" & bh & "%\'")
Dim idx As Integer = 1
If max > "" Then
    idx = Cint(max.SubString(bh.Length)) + 1
Else
    idx = 1
End If

e.DataRow("编号") = bh & format(idx, "0000")