Foxtable(狐表)用户栏目专家坐堂 → [求助]目录树aftereditnode代码报错


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

主题:[求助]目录树aftereditnode代码报错

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


加好友 发短信
等级:幼狐 帖子:63 积分:583 威望:0 精华:0 注册:2016/1/20 11:21:00
[求助]目录树aftereditnode代码报错  发帖心情 Post By:2018/3/20 2:17:00 [只看该作者]

 
Dim jm As String = "'" & dg("级码") & "%'"
Dim lj As String = "'" & e.Node.fullpath & "%'"
For Each de In dt.Select("目录层级 >= '" & i & "' And 上级级码 Like '" & jm & "' And 目录 Like '" & lj & "'" ) '历遍目录列中所有需要重命名的行
     Dim ml2 As String = de("目录").Substring(pl) '在选出的行的目录列中,取将本层目录后的值
     de("目录") = pth & e.newtext & ml2 '将需要更改行中,目录列需要修改的部分修改为新名称
     de("文件名") = e.NewText '将本行文件名修改为新名称
Next

上面的代码是在窗口中目录树aftereditnode事件代码的一部分,每次运行到黄色背景的这面代码时,总是报错:

                                                    <语法错误:“1”运算符后缺少操作数。>

是不是我这行的表达式写错了?

还请大神解惑!谢谢!

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


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

改成

 

msgbox("目录层级 >= '" & i & "' And 上级级码 Like " & jm & " And 目录 Like " & lj & "")

For Each de In dt.Select("目录层级 >= '" & i & "' And 上级级码 Like " & jm & " And 目录 Like " & lj & "")


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


加好友 发短信
等级:幼狐 帖子:63 积分:583 威望:0 精华:0 注册:2016/1/20 11:21:00
  发帖心情 Post By:2018/3/20 9:51:00 [只看该作者]

有点甜大神你好:

谢谢你给出修改意见,但按照你给的修改方法,运行时还是报错:<语法错误:“1”运算符后缺少操作数。>

图片点击可在新窗口打开查看此主题相关图片如下:档案目录管理.png
图片点击可在新窗口打开查看
上图是与目录树相关联的表
窗口中的目录树可以增加根目录、增加子目录正常。
以下是aftereditnode的全部代码,还请大神看看是不是其他地还有问题?谢谢!
Dim dt As DataTable = DataTables("档案目录管理")
If e.NewText = "" Then
    e.Cancel = True
    Return
End If
MessageBox.Show(e.node.fullpath)
Dim dr As DataRow = dt.find("目录 = '" & e.node.fullpath & "'and 目录层级 = '" & e.node.level & "'") '查找本节点对应行
MessageBox.Show("目录=" & dr("目录"))
If dr IsNot Nothing Then  '如果存在
    Dim ds As DataRow
    Dim de As DataRow
    Dim i As Integer = e.node.level
    If i > 0 Then
        Dim fn As String = dr("文件名")  '将本行文件名列的值赋于FN
        Dim pth1 As String = e.node.fullpath '将全路径的值赋于PTH1
        Dim pth As String
        Dim fl As Integer = fn.Length+1 '计算文件名的长度并加1(\的长度)
        Dim pl As Integer = pth1.Length  '计算全路径的长度
        pth = pth1.SubString(0,pl-fl)  '取全路径中除去文件名及斜杠长度的值(此即为上级目录的值)
        Dim dg As DataRow = dt.find("目录 = '" & pth & "'and 目录层级 = '" & e.node.level-1 & "'") '查找父节点对应行
        If dg IsNot Nothing Then '如父节点对应的行存在
            ds = dt.Find("文件名 = '" & e.NewText & "'And 目录层级 = '" & i & "' And 上级级码 = '"& dg("级码") & "'" ) '判断新输入的目录名在同层级和同父目录的行中是否存在
            If ds IsNot Nothing '如果存在,取消输入.
                MessageBox.Show("此目录已经存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
                e.cancel = True
            Else
                
                Dim jm As String = "'" & dg("级码") & "%'"
                Dim lj As String = "'" & e.Node.fullpath & "%'"
                msgbox("目录层级 >= '" & i & "' And 上级级码 Like " & jm & " And 目录 Like " & lj & "")
                For Each de In dt.Select("目录层级 >= '" & i & "' And 上级级码 Like " & jm & " And 目录 Like " & lj & "")'历遍目录列中所有需要重命名的行
                    Dim ml2 As String = de("目录").Substring(pl) '在选出的行的目录列中,取将本层目录后的值
                    de("目录") = pth & e.newtext & ml2 '将需要更改行中,目录列需要修改的部分修改为新名称
                    de("文件名") = e.NewText '将本行文件名修改为新名称
                Next
                If ftp1.direxists(de("路径") & e.node.name) Then '判断需要重命名的根目录是否存在
                    ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
                Else
                    ftp1.makedir(de("路径") & e.node.name) '如果不存在,新建目录
                    ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
                End If
                e.Node.Name = e.NewText '使得节点的名称和标题保持一致.
            End If
        End If
    Else '如果不存在父目录,即为根目录
        
        ds = dt.Find("文件名 = '" & e.NewText & "'And 目录层级 = '0'" ) '判断新输入的目录名在同层级目录的行中是否存在
        If ds IsNot Nothing '如果存在,取消输入.
            MessageBox.Show("此目录已经存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
            e.cancel = True
        Else '如果不存在
            Dim bml As Integer = e.node.fullpath.Length '计算本层目录的长度
            Dim jm As String = "'" & dr("级码") & "%'"
            
            Dim ym As String = "'" & e.Node.Name & "%'"
            For Each de In dt.Select("级码 Like '" & jm & "' And 目录 Like " & ym & "" ) '历遍根目录列中所有需要重命名的行
                MessageBox.Show("级码=" & jm)
                Dim ml2 As String = de("目录").Substring(bml) '在选出的行的目录列中,取将本层目录后的值
                de("目录") = e.newtext & ml2 '将需要更改行中,目录列需要修改的部分修改为新名称
                de("文件名") = e.NewText '将本行文件名修改为新名称
            Next
            If ftp1.direxists(de("路径") & e.node.name) Then '判断需要重命名的根目录是否存在
                ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
            Else
                ftp1.makedir(de("路径") & e.node.name) '如果不存在,新建目录
                ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
            End If
            e.Node.Name = e.NewText '使得节点的名称和标题保持一致.
        End If
    End If
End If

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


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

修改红色代码,如果还报错,弹出每次的条件截图发上来看看。
 
Dim dt As DataTable = DataTables("档案目录管理")
If e.NewText = "" Then
    e.Cancel = True
    Return
End If
MessageBox.Show(e.node.fullpath)
Dim dr As DataRow = dt.find("目录 = '" & e.node.fullpath & "'and 目录层级 = '" & e.node.level & "'") '查找本节点对应行
MessageBox.Show("目录=" & dr("目录"))
If dr IsNot Nothing Then  '如果存在
    Dim ds As DataRow
    Dim de As DataRow
    Dim i As Integer = e.node.level
    If i > 0 Then
        Dim fn As String = dr("文件名")  '将本行文件名列的值赋于FN
        Dim pth1 As String = e.node.fullpath '将全路径的值赋于PTH1
        Dim pth As String
        Dim fl As Integer = fn.Length+1 '计算文件名的长度并加1(\的长度)
        Dim pl As Integer = pth1.Length  '计算全路径的长度
        pth = pth1.SubString(0,pl-fl)  '取全路径中除去文件名及斜杠长度的值(此即为上级目录的值)
        Dim dg As DataRow = dt.find("目录 = '" & pth & "'and 目录层级 = '" & e.node.level-1 & "'") '查找父节点对应行
        If dg IsNot Nothing Then '如父节点对应的行存在
            ds = dt.Find("文件名 = '" & e.NewText & "'And 目录层级 = '" & i & "' And 上级级码 = '"& dg("级码") & "'" ) '判断新输入的目录名在同层级和同父目录的行中是否存在
            If ds IsNot Nothing '如果存在,取消输入.
                MessageBox.Show("此目录已经存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
                e.cancel = True
            Else
                
                Dim jm As String = "'" & dg("级码") & "%'"
                Dim lj As String = "'" & e.Node.fullpath & "%'"
                'msgbox("目录层级 >= '" & i & "' And 上级级码 Like " & jm & " And 目录 Like " & lj & "")
                For Each de In dt.Select("目录层级 >= '" & i & "' And 上级级码 Like " & jm & " And 目录 Like " & lj & "")'历遍目录列中所有需要重命名的行
                    Dim ml2 As String = de("目录").Substring(pl) '在选出的行的目录列中,取将本层目录后的值
                    de("目录") = pth & e.newtext & ml2 '将需要更改行中,目录列需要修改的部分修改为新名称
                    de("文件名") = e.NewText '将本行文件名修改为新名称
                Next
                If ftp1.direxists(de("路径") & e.node.name) Then '判断需要重命名的根目录是否存在
                    ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
                Else
                    ftp1.makedir(de("路径") & e.node.name) '如果不存在,新建目录
                    ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
                End If
                e.Node.Name = e.NewText '使得节点的名称和标题保持一致.
            End If
        End If
    Else '如果不存在父目录,即为根目录
        
        ds = dt.Find("文件名 = '" & e.NewText & "'And 目录层级 = '0'" ) '判断新输入的目录名在同层级目录的行中是否存在
        If ds IsNot Nothing '如果存在,取消输入.
            MessageBox.Show("此目录已经存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
            e.cancel = True
        Else '如果不存在
            Dim bml As Integer = e.node.fullpath.Length '计算本层目录的长度
            Dim jm As String = "'" & dr("级码") & "%'"
            
            Dim ym As String = "'" & e.Node.Name & "%'"
            For Each de In dt.Select("级码 Like " & jm & " And 目录 Like " & ym & "" ) '历遍根目录列中所有需要重命名的行
                MessageBox.Show("级码=" & jm)
                Dim ml2 As String = de("目录").Substring(bml) '在选出的行的目录列中,取将本层目录后的值
                de("目录") = e.newtext & ml2 '将需要更改行中,目录列需要修改的部分修改为新名称
                de("文件名") = e.NewText '将本行文件名修改为新名称
            Next
            If ftp1.direxists(de("路径") & e.node.name) Then '判断需要重命名的根目录是否存在
                ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
            Else
                ftp1.makedir(de("路径") & e.node.name) '如果不存在,新建目录
                ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
            End If
            e.Node.Name = e.NewText '使得节点的名称和标题保持一致.
        End If
    End If
End If

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


加好友 发短信
等级:幼狐 帖子:63 积分:583 威望:0 精华:0 注册:2016/1/20 11:21:00
  发帖心情 Post By:2018/3/22 20:13:00 [只看该作者]

已完美解决!谢谢!

 回到顶部