以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]目录树aftereditnode代码报错 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=116100) |
-- 作者:yzxdz750626 -- 发布时间:2018/3/20 2:17:00 -- [求助]目录树aftereditnode代码报错 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”运算符后缺少操作数。> 是不是我这行的表达式写错了? 还请大神解惑!谢谢!
|
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2018/3/20 9:51:00 -- 有点甜大神你好: 谢谢你给出修改意见,但按照你给的修改方法,运行时还是报错:<语法错误:“1”运算符后缺少操作数。> 窗口中的目录树可以增加根目录、增加子目录正常。 以下是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
|
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2018/3/22 20:13:00 -- 已完美解决!谢谢! |