Foxtable(狐表)用户栏目专家坐堂 → 求编号的自动生成代码


  共有23666人关注过本帖树形打印复制链接

主题:求编号的自动生成代码

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


加好友 发短信
等级:一尾狐 帖子:492 积分:4243 威望:0 精华:0 注册:2008/9/1 20:47:00
  发帖心情 Post By:2011/6/9 21:47:00 [只看该作者]

要达到"实话实说”的编号要求,我也实话实说,还真有点费劲,参考了狐狸他爹的流水账编码(狐狸他爹的高效率流水账那可真叫一个绝),勉强完成,经测试,符合“实话实说”的要求

 

Dim d As Date = e.DataRow("日期")
Dim StartDate As Date
Dim EndDate As Date
Dim Month As Integer  = d.Month
Dim Year As Integer = d.Year
StartDate = New Date(Year,Month,1)
EndDate = New Date(Year,Month,Date.DaysInMonth(Year,Month))
If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("编号") = Nothing
    Else
        If e.NewValue <> Nothing And e.DataRow("编号") = Nothing Then
            'e.DataRow("编号") ="AA" & format(e.NewValue,"yyMMdd")    '可替换
            e.DataRow("编号") ="AA" & CStr(e.NewValue).Remove(0,2).Remove(2,1).Remove(4,1)
            Dim dr As DataRow
            Dim mr As DataRow = e.DataRow
            Dim drs As List(of DataRow)
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & "  And [日期] = #" & d & "#", "[_SortKey] Desc")
            If dr Is Nothing Then
                mr("编号") = mr("编号") & format(1,"000")
                dr = mr
            End If
            drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [日期] = '" & d & "'", "[_SortKey]")
            For i As Integer = 1 To drs.Count - 1
                drs(i)("编号") ="AA" & drs(i-1)("编号").SubString(drs(i-1)("编号").Length - 9) + 1
            Next
        End If
    End If
End If

 

说明:如果要求编号确立后不允许修改的,将[_SortKey] 替换为[_Identify]

[此贴子已经被作者于2011-6-9 23:11:14编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  42楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/6/9 22:01:00 [只看该作者]

如果要达到上面的代码,一句就可以了:

 

If e.DataCol.Name = "日期" Then
    e.DataRow("编号")  = "AA"& Format(e.DataRow("日期"),"yyMMdd") & Format(e.DataTable.Compute("count(日期)", "[日期] = #" & e.DataRow("日期")  & "# And [_identify] < 50" & e.DataRow("_Identify")),"0000")
End If


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  43楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/6/9 22:03:00 [只看该作者]

以下是引用实话实说在2011-6-8 6:13:00的发言:

36楼编号代码存在这样一个问题:例如,现在已经编有1-5个顺序编号,删除2-3编号,还剩1,4,5编号,再生成新的编号时是从4开始,(有重复)而不是从6开始.

[此贴子已经被作者于2011-6-8 6:13:49编辑过]

如果是这个效果:

 

If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("编号") = Nothing
    Else
        If e.NewValue <> Nothing And e.DataRow("编号") = Nothing Then
            Dim s As String ="AA" & format(e.DataRow("日期"),"yyMMdd")    '只修改了这个地方···
            Dim i1 As String = e.DataTable.Compute("Max(第三列)", "[日期] = #" & e.DataRow("日期")  & "#" )
            Dim n As Integer
            If s = left(i1,8) Then
                n=CInt(right(i1,3))
            Else
                n=0
            End If
            s= s & format(n+1,"000")
            e.DataRow("第三列")=s
        End If
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
实话实说
  44楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2011/6/10 6:42:00 [只看该作者]

43楼代码满足要求,谢了.

 回到顶部
帅哥哟,离线,有人找我吗?
ygg8310
  45楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:956 积分:8471 威望:0 精华:0 注册:2016/4/10 14:33:00
  发帖心情 Post By:2019/7/29 22:19:00 [只看该作者]

图片点击可在新窗口打开查看

 回到顶部
总数 45 上一页 1 2 3 4 5