Foxtable(狐表)用户栏目专家坐堂 → [求助]获取目录树节点报错!


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

主题:[求助]获取目录树节点报错!

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


加好友 发短信
等级:童狐 帖子:255 积分:2152 威望:0 精华:0 注册:2013/6/8 22:41:00
[求助]获取目录树节点报错!  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/2 16:26:00 [只看该作者]

 同时,加入msgbox,定位一下你的错误位置。

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


加好友 发短信
等级:童狐 帖子:255 积分:2152 威望:0 精华:0 注册:2013/6/8 22:41:00
  发帖心情 Post By:2017/6/2 16:36:00 [只看该作者]

就是这个句代码错误 

 cmd.ExecuteScalar 

下面是用您的SQL结果


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

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

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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

 


 回到顶部