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


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

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

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


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

   

 

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


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


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

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

 

你给的需求不合理。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/9 19:37:00 [显示全部帖子]

 If e.DataCol.Name = "编码名称" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("编码名称 = '" & e.NewValue & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("部门名称重复是否正确!","请确认")
    Else
        dr = e.DataTable.Find("编码规则 like '" & e.DataRow("编码规则") & "%'")
        If dr IsNot Nothing Then
            Messagebox.Show("不能修改")
        End If
    End If
End If

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/9 21:23:00 [显示全部帖子]

 

[此贴子已经被作者于2014-11-9 21:23:48编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/9 21:24:00 [显示全部帖子]

 If e.DataCol.Name = "编码名称" OrElse e.DataCol.Name = "编码规则" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("编码名称 = '" & e.DataRow("编码名称") & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("部门名称重复是否正确!","请确认")

        e.Cancel = true
    Else
        dr = e.DataTable.Find("编码规则 like '" & e.DataRow("编码规则") & "%'")
        If dr IsNot Nothing Then
            Messagebox.Show("不能修改")

            e.Cancel = true
        End If
    End If
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/9 21:46:00 [显示全部帖子]

If e.DataCol.Name = "编码名称" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("编码名称 = '" & e.DataRow("编码名称") & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("部门名称重复是否正确!","请确认")
        'e.Cancel=True
    Else
        dr = e.DataTable.Find("编码规则 like '" & e.DataRow("编码规则") & "%'")
        If dr IsNot Nothing Then
            Messagebox.Show("不能修改")
            'e.Cancel=True
        End If
    End If
Else If e.DataCol.Name = "编码规则" Then
    Dim dr As DataRow = e.DataTable.Find("编码规则 like '" & e.OldValue & "%'")
    If dr IsNot Nothing Then
        Messagebox.Show("不能修改")
        'e.Cancel=True
    End If
End If

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/11/9 22:04:00 [显示全部帖子]

If e.DataCol.Name = "编码名称" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("编码名称 = '" & e.DataRow("编码名称") & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("部门名称重复是否正确!","请确认")
        'e.Cancel=True
    Else
        dr = e.DataTable.Find("编码规则 like '" & e.DataRow("编码规则") & "%'")
        If dr IsNot Nothing Then
            Messagebox.Show("不能修改")
            'e.Cancel=True
        End If
    End If
Else If e.DataCol.Name = "编码规则" AndAlso e.OldValue <> Nothing Then
    Dim dr As DataRow = e.DataTable.Find("编码规则 like '" & e.OldValue & "%' and _Identify <> " & e.DataRow("_Identify"))
    If dr IsNot Nothing Then
        Messagebox.Show("不能修改")
        'e.Cancel=True
    End If
End If


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