以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]获取目录树节点报错!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=101555)

--  作者:静听枫雨
--  发布时间:2017/6/2 15:50:00
--  [求助]获取目录树节点报错!
下面的代码,新建一个项目  不报错。在我项目 里添加,就报错。不知道是什么问题,新建一个项目使用的是内部表 db   我的项目使用的是外部表 Dingdan 内代码红色部份

If e.node.Level = 0 Then
    e.node.Expand
ElseIf e.node.Level =1 Then
    Dim bmm As String = e.node.Name.Split("+")(0)
    DataTables("授权表").LoadFilter = "用户组=\'" & e.node.ParentNode.Name & "\' and bm =\'" & bmm & "\'"
    DataTables("授权表").Load()
    Dim zd As new  Dictionary(of String,String)
    zd.Clear
    Dim ms As Integer = 0
    For Each dr As DataRow In DataTables("授权表").dataRows
        If zd.ContainsKey(dr("lm"))=False Then
            zd.Add(dr("lm"),"1")
        End If
        If dr.IsNull("lm")=True Then
            ms +=1
        End If
    Next
    If ms=0 Then
        Dim rw As DataRow =  DataTables("授权表").AddNew
        rw("用户组") = e.node.ParentNode.Name
        rw("bm") = bmm
        rw.Save
    End If
    Dim ss As new List(of String)
    For Each cl As Col In Tables(bmm).Cols
        If zd.ContainsKey(cl.Name)=False Then
            If Connections.Count=0 Then
                Dim rw As DataRow =  DataTables("授权表").AddNew
                rw("用户组") = e.node.ParentNode.Name
                rw("bm") = bmm
                rw("lm") = cl.Name
            Else
                ss.Add("(\'" & e.node.ParentNode.Name & "\',\'" & bmm & "\',\'" & cl.name & "\',0,0)")
                zd.Add(cl.Name,"1")
            End If
        End If
    Next
    Dim Arys() As String
    Arys=ss.ToArray()
    Dim ssj As String = String.Join(",",Arys)
    If ssj > "" Then
        Dim cmd As new SQLCommand
        cmd.ConnectionName = "Dingdan"
        cmd.CommandText = "Insert Into 授权表 (用户组,bm,lm,不可见,不可编辑) Values" & ssj
        cmd.ExecuteScalar
        output.show(ssj)
        DataTables("授权表").LoadFilter = "用户组=\'" & e.node.ParentNode.Name & "\' and bm =\'" & bmm & "\'"
        DataTables("授权表").Load()  
    End If
    DataTables("授权表").save()
    For Each cl As Col In Tables(bmm).Cols
        Dim lmm As String = IIF(cl.Caption > "" ,cl.Caption,cl.Name)
        Dim bm2 As String = IIF(DataTables(bmm).Caption > "" ,DataTables(bmm).Caption,bmm)
        DataTables("授权表").ReplaceFor("列名",lmm,"lm=\'" & cl.Name & "\'")
        DataTables("授权表").ReplaceFor("表名",bm2,"bm=\'" & bmm & "\'")    
    Next
    DataTables("授权表").AcceptChanges()
End If

报错图片如下:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170602155043.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/6/2 15:51:56编辑过]

--  作者:有点色
--  发布时间:2017/6/2 16:25:00
--  

弹出生成sql语句看看

 

        Dim cmd As new SQLCommand

        cmd.ConnectionName = "Dingdan"
        cmd.CommandText = "Insert Into 授权表 (用户组,bm,lm,不可见,不可编辑) Values" & ssj
        msgbox(cmd.CommandText)
        cmd.ExecuteScalar

--  作者:有点色
--  发布时间:2017/6/2 16:26:00
--  
 同时,加入msgbox,定位一下你的错误位置。
--  作者:静听枫雨
--  发布时间:2017/6/2 16:36:00
--  
就是这个句代码错误 

 cmd.ExecuteScalar 

下面是用您的SQL结果


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170602163435.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/6/2 16:46:38编辑过]

--  作者:有点色
--  发布时间:2017/6/2 17:26:00
--  

改代码

 

If e.node.Level = 0 Then
    e.node.Expand
ElseIf e.node.Level =1 Then
    Dim bmm As String = e.node.Name.Split("+")(0)
    DataTables("授权表").LoadFilter = "用户组=\'" & e.node.ParentNode.Name & "\' and bm =\'" & bmm & "\'"
    DataTables("授权表").Load()
    Dim zd As new  Dictionary(of String,String)
    zd.Clear
    Dim ms As Integer = 0
    For Each dr As DataRow In DataTables("授权表").dataRows
        If zd.ContainsKey(dr("lm"))=False Then
            zd.Add(dr("lm"),"1")
        End If
        If dr.IsNull("lm")=True Then
            ms +=1
        End If
    Next
    If ms=0 Then
        Dim rw As DataRow =  DataTables("授权表").AddNew
        rw("用户组") = e.node.ParentNode.Name
        rw("bm") = bmm
        rw.Save
    End If
    Dim ss As new List(of String)
    For Each cl As Col In Tables(bmm).Cols
        If zd.ContainsKey(cl.Name)=False Then
            If Connections.Count=0 Then
                Dim rw As DataRow =  DataTables("授权表").AddNew
                rw("用户组") = e.node.ParentNode.Name
                rw("bm") = bmm
                rw("lm") = cl.Name
            Else
                ss.Add("(\'" & e.node.ParentNode.Name & "\',\'" & bmm & "\',\'" & cl.name & "\',0,0)")
                zd.Add(cl.Name,"1")
            End If
        End If
    Next
   
    Dim cmd As new SQLCommand
    cmd.C
    For Each s As String In ss
        cmd.CommandText = "Insert Into 授权表 (用户组,bm,lm,不可见,不可编辑) Values " & s
        cmd.ExecuteScalar
    Next
   
    DataTables("授权表").LoadFilter = "用户组=\'" & e.node.ParentNode.Name & "\' and bm =\'" & bmm & "\'"
    DataTables("授权表").Load()
    For Each cl As Col In Tables(bmm).Cols
        Dim lmm As String = IIF(cl.Caption > "" ,cl.Caption,cl.Name)
        Dim bm2 As String = IIF(DataTables(bmm).Caption > "" ,DataTables(bmm).Caption,bmm)
        DataTables("授权表").ReplaceFor("列名",lmm,"lm=\'" & cl.Name & "\'")
        DataTables("授权表").ReplaceFor("表名",bm2,"bm=\'" & bmm & "\'")
    Next
    DataTables("授权表").AcceptChanges()
End If