Foxtable(狐表)用户栏目专家坐堂 → [求助]已使用的不是末级的部门编码不允许增加下级


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

主题:[求助]已使用的不是末级的部门编码不允许增加下级

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
[求助]已使用的不是末级的部门编码不允许增加下级  发帖心情 Post By:2014/8/19 7:26:00 [只看该作者]

老师,

    如何实现,已使用的不是末级的部门编码不允许增加下级,除非删除已使用的职员档案资料,才可以修改。

举例:

   部门档案 01财务      职员档案 0001 某某 属于01财务

 

现在增加了部门0101 财务下的结算部    在职员档案中找到 了已经使用的 01 财务 不允许增加。例子如下:

 

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:部门档案.foxdb


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/19 9:41:00 [只看该作者]

   

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:部门档案.foxdb


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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2014/8/20 8:18:00 [只看该作者]

有点甜老师,

     还是不行,没达到目标,好似没有变化。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/20 9:10:00 [只看该作者]

关键是不明白你的需求是什么,数据表改变了,生成的树一定会改变的,2楼的例子只是限制录入子部门。

 

你给的需求不合理。


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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2014/8/20 16:49:00 [只看该作者]

老师 例子是这样 

部门档案 编码级次2级 ** **例如(01财务部 0101结算部)
职员档案 编码级次1级 ****例如 0001 张三

6月
部门档案增加财务部01  是否末级定义为末级                                                    
职员档案,新建了张三0001 ,属于财务部,部门列选择了01 财务部

7月
由于分工的增加
部门档案中 的财务部01 下 要增加一个结算部0101

以上部分,我上传的例子已经实现
想要老师帮助下面部分 
在部门档案中,需要提示 01财务部作为末级数据已经使用,不允许增加下级0101 结算部




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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/20 17:14:00 [只看该作者]

DatacolChanging代码替换一下

 

If e.DataCol.Name = "编码规则" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("编码规则 = '" & e.NewValue & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("编码重复!")
        e.Cancel = True
        dr.Delete
    End If
End If


If e.DataCol.Name = "编码规则" AndAlso e.NewValue <> Nothing Then
    Dim fdr As DataRow = DataTables("分类编码方案").Find("基础档案名称 = '" & e.DataTable.Name & "'")
    If fdr IsNot Nothing Then
        Dim reg As new System.Text.RegularExpressions.Regex(fdr("正则"))
        If reg.Ismatch(e.NewValue) = False Then
            e.Cancel = True
        Else
            e.DataRow("是否末级") = (fdr("字符数") = e.NewValue.length)'我加的
            Dim count As Integer = 0
            Dim prev As String = ""
            For i As Integer = 0 To fdr("编码规则").length - 1
                count += val(fdr("编码规则").chars(i))
               
                Dim str As String = e.NewValue.Substring(0, count)
               
                If DataTables("职员档案").Find("编码规则 = '" & str & "'") IsNot Nothing Then
                    msgbox("已使用,不能添加")
                    e.NewValue = Nothing
                    Exit For
                Else
                   
                   
                    If count < e.NewValue.length Then
                        If e.DataTable.Find("编码规则 = '" & str & "'") Is Nothing Then
                            MessageBox.Show("缺少上级科目:" & str,"提示",MessageBoxButtons.OK)
                            e.Cancel = True
                            e.DataRow("是否末级")=False
                            Exit For
                        End If
                    Else If count = e.NewValue.length  Then
                        If i = fdr("编码规则").length - 1 Then
                            e.DataRow("是否末级") = True
                            e.DataTable.ReplaceFor("是否末级", False, "编码规则 = '" & prev & "'")
                        Else
                            Dim filter As String = "编码规则 <> '" & str & "' and 编码规则 like '" & str & "*'"
                            If  e.DataTable.Find(filter) Is Nothing Then
                                e.DataRow("是否末级") = True
                                filter = "编码规则 = '" & prev & "'"
                                e.DataTable.ReplaceFor("是否末级", False, filter)
                            Else
                                e.DataRow("是否末级") = False
                            End If
                           
                            Exit For
                        End If
                    End If
                    prev = str
                End If
            Next
           
        End If
    End If
End If


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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
已使用的部门,不允许修改部门名称  发帖心情 Post By:2014/10/20 11:37:00 [只看该作者]

老师,
    已使用的部门,怎么写代码能达到在职员中使用的部门,不允许在部门档案中修改部门名称,谢谢。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:部门档案.foxdb


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/20 11:43:00 [只看该作者]

 datacolchanging事件,代码

 

If e.DataCol.Name = "编码名称" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("编码名称 = '" & e.NewValue & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("部门名称重复是否正确!","请确认")
        e.Cancel = True
    Else
        dr = DataTables("职员档案").Find("编码名称 = '" & e.OldValue & "'")
        If dr IsNot Nothing Then
            msgbox("已使用,不能重命名")
        End If
    End If
End If


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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2014/10/25 21:40:00 [只看该作者]

有点甜 老师

出现了一个问题,增加了一条记录05 财务部门 保存退出;
再进去使用修改 将05 改为0501 提示不存在05 一级科目 但是“e.Cancel = True”好似没有执行,如下图,这是为什么呢?
求老师帮忙解一下。


图片点击可在新窗口打开查看此主题相关图片如下:一级改为二级,末级有问题.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/26 9:38:00 [只看该作者]

If e.DataCol.Name = "编码规则" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("编码规则 = '" & e.NewValue & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("编码重复!")
        e.Cancel = True
        dr.Delete
    End If
End If


If e.DataCol.Name = "编码规则" AndAlso e.NewValue <> Nothing Then
    Dim fdr As DataRow = DataTables("分类编码方案").Find("基础档案名称 = '" & e.DataTable.Name & "'")
    If fdr IsNot Nothing Then
        Dim reg As new System.Text.RegularExpressions.Regex(fdr("正则"))
        If reg.Ismatch(e.NewValue) = False Then
            e.Cancel = True
        Else
            e.DataRow("是否末级") = (fdr("字符数") = e.NewValue.length)'我加的
            Dim count As Integer = 0
            Dim prev As String = ""
            For i As Integer = 0 To fdr("编码规则").length - 1
                count += val(fdr("编码规则").chars(i))
               
                Dim str As String = e.NewValue.Substring(0, count)
                If count < e.NewValue.length Then
                    If e.DataTable.Find("编码规则 = '" & str & "'") Is Nothing Then
                        MessageBox.Show("缺少上级科目:" & str,"提示",MessageBoxButtons.OK)
                        e.Cancel = True
                        e.DataRow("是否末级")=False
                        Exit For
                    Else If e.OldValue = str Then
                        MessageBox.Show("缺少上级科目:" & str,"提示",MessageBoxButtons.OK)
                        e.Cancel = True
                        Exit For
                    End If
                Else If count = e.NewValue.length  Then
                    If i = fdr("编码规则").length - 1 Then
                        e.DataRow("是否末级") = True
                        e.DataTable.ReplaceFor("是否末级", False, "编码规则 = '" & prev & "'")
                    Else
                        Dim filter As String = "编码规则 <> '" & str & "' and 编码规则 like '" & str & "*'"
                        If  e.DataTable.Find(filter) Is Nothing Then
                            e.DataRow("是否末级") = True
                            filter = "编码规则 = '" & prev & "'"
                            e.DataTable.ReplaceFor("是否末级", False, filter)
                        Else
                            e.DataRow("是否末级") = False
                        End If
                       
                        Exit For
                    End If
                End If
                prev = str
            Next
        End If
    End If
End If


 回到顶部
总数 24 1 2 3 下一页