Foxtable(狐表)用户栏目专家坐堂 → 关于自动编号


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

主题:关于自动编号

帅哥哟,离线,有人找我吗?
新航程小何
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
关于自动编号  发帖心情 Post By:2015/5/19 17:25:00 [只看该作者]

各位老师,我想实现功能如下:员工表(员工编号,部门名称),部门表(部门编号,部门名称)
1、员工编号,是根据“所属部门编号”生成
2、但是员工表中是没有部门编号,部门编号是在"部门"表中
我想实现编号功能,但是不知道怎么把员工编号改成:部门编号+2位顺序号
Select e.DataCol.Name
    Case "部门名称"
        If e.DataRow.IsNull("部门名称") Then
            e.DataRow("员工编号") = Nothing
        Else
            Dim lb As String = e.DataRow("部门名称")
            If e.DataRow("员工编号").StartsWith(lb) = False '如果单据地块编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.SQLCompute("Max(员工编号)","所属园区 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该所属园区的最大地块编号
                If max > "" Then '如果存在最大地块编号
                    idx = CInt(max.Substring(9,2)) + 1 '获得最大地块编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("员工编号") = lb & Format(idx,"00")
            End If
        End If
End Select
[此贴子已经被作者于2015/5/19 17:25:43编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/19 17:31:00 [只看该作者]

利用FIND 或者SQLFIND 根据部门名称 查找到对应的部门编号



dim dr as datarow = datatables("部门").find("部门名称='" & e.datarow("部门名称") & "'")
if dr isnot nothing then
Dim lb As String = dr("部门编号")

end if

 回到顶部
帅哥哟,离线,有人找我吗?
新航程小何
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
  发帖心情 Post By:2015/5/19 17:43:00 [只看该作者]

老师,我的下面代码也实现自动编号了,不过不能累加,每次顺序号都是“01”,编号的例子:ty2015010101-01
Select e.DataCol.Name
    Case "部门名称"
        If e.DataRow.IsNull("部门名称") Then
            e.DataRow("员工编号") = Nothing
        Else
            dim dr as datarow = datatables("部门").find("部门名称='" & e.datarow("部门名称") & "'")
if dr isnot nothing then
Dim lb As String = dr("部门编号")
            If e.DataRow("员工编号").StartsWith(bh) = False '如果单据地块编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.SQLCompute("Max(员工编号)","部门名称 = '" & bh  & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该所属园区的最大地块编号
                If max > "" Then '如果存在最大地块编号
                    idx = CInt(max.Substring(13,2)) + 1 '获得最大地块编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("地块编号") = bh & Format(idx,"00")
            End If
        End If
End Select
[此贴子已经被作者于2015/5/19 19:05:33编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/19 19:24:00 [只看该作者]

 贴出完整代码,最后应该加一句 e.DataRow.Save

 回到顶部
帅哥哟,离线,有人找我吗?
新航程小何
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
  发帖心情 Post By:2015/5/19 19:28:00 [只看该作者]

还是不行,是不是实现的代码哪错了?

 回到顶部
帅哥哟,离线,有人找我吗?
新航程小何
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
  发帖心情 Post By:2015/5/19 19:39:00 [只看该作者]

Select e.DataCol.Name
    Case "部门名称"
        If e.DataRow.IsNull("部门名称") Then
            e.DataRow("员工编号") = Nothing
        Else
            Dim dr As DataRow = DataTables("部门单位").find("部门='" & e.DataRow("部门名称") & "'")
            If dr IsNot Nothing Then
                Dim bh As String = dr("编号")
                If e.DataRow("员工编号").StartsWith(bh) = False '如果单据地块编号前缀不符
                    Dim max As String
                    Dim idx As Integer
                    max = e.DataTable.SQLCompute("Max(员工编号)","部门名称 = '" & bh  & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该所属园区的最大地块编号
                    If max > "" Then '如果存在最大地块编号
                        idx = CInt(max.Substring(3,2)) + 1 '获得最大地块编号的后三位顺序号,并加1
                    Else
                        idx = 1 '否则顺序号等于1
                    End If
                    e.DataRow("员工编号") = bh & Format(idx,"00")
                End If
            End If
        End If
End Select
e.DataRow.Save
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150519193736.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/19 19:39:00 [只看该作者]

 贴出完整可以测试的代码,或者上传具体例子

 回到顶部
帅哥哟,离线,有人找我吗?
新航程小何
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
  发帖心情 Post By:2015/5/19 19:40:00 [只看该作者]

六楼的就是完整的代码

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/19 19:41:00 [只看该作者]

Select e.DataCol.Name
    Case "部门名称"
        If e.DataRow.IsNull("部门名称") Then
            e.DataRow("员工编号") = Nothing
        Else
            Dim dr As DataRow = DataTables("部门单位").find("部门='" & e.DataRow("部门名称") & "'")
            If dr IsNot Nothing Then
                Dim bh As String = dr("编号")
                'If e.DataRow("员工编号").StartsWith(bh) = False '如果单据地块编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.SQLCompute("Max(员工编号)","部门名称 = '" & bh  & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该所属园区的最大地块编号
                If max > "" Then '如果存在最大地块编号
                    idx = CInt(max.Substring(bh.Length,2)) + 1 '获得最大地块编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("员工编号") = bh & Format(idx,"00")
                e.DataRow.Save
                'End If
            End If
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
新航程小何
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
  发帖心情 Post By:2015/5/19 19:45:00 [只看该作者]

还是原问题
[此贴子已经被作者于2015/5/19 19:45:46编辑过]

 回到顶部
总数 12 1 2 下一页