以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]提示datatable不存在  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=170785)

--  作者:lgj716330
--  发布时间:2021/8/7 11:57:00
--  [求助]提示datatable不存在
Select Case e.Node.Name
    Case e.Node.Name
        Dim dr As DataRow
        dr = DataTables("报表权限").Find("报表 = \'" & e.Node.Name & "\'")
        If dr IsNot Nothing Then
            Dim fl As String = dr("分组")
            Dim ck As String = dr("查看权限")
            If Functions.Execute("ShouQuan",fl,ck) Then
                If Tables.Contains(e.Node.Name) Then
                    MainTable = Tables(e.Node.Name)
                ElseIf Forms.Contains(e.Node.Name) Then
                    MainTable = Tables("查询表")
                    Forms(e.Node.Name).Open()
                End If
            End If
        Else
            MessageBox.Show("你无此表查阅权限!")
        End If
End Select

符合标色部分条件,但总提示

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20210807115518.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/8/7 12:02:00
--  
看看是不是窗口绑定了这个表,但是没有加载
--  作者:lgj716330
--  发布时间:2021/8/7 12:43:00
--  

此主题相关图片如下:微信图片_20210807123903.png
按此在新窗口浏览图片
这个目录树下的节点除了这个“账务审核”属于窗口外,其他都是table
但是我把这个目录树下的“账务审核”节点移到其他都是下面这个类型的目录树里,是没问题的
            If Functions.Execute("ShouQuan",fl,ck) Then
                    MainTable = Tables("查询表")
                    Forms(e.Node.Name).Open()
                End If

[此贴子已经被作者于2021/8/7 12:45:37编辑过]

--  作者:有点蓝
--  发布时间:2021/8/7 13:21:00
--  
请上传实例测试
--  作者:lgj716330
--  发布时间:2021/8/7 14:31:00
--  
哦,查出原因了,在这代码之前还有另外一段代码的影响,需要在这代码中加个判断Tables.Contains(e.Node.Name) 就没问题了
Select Case e.Node.Name
    Case e.Node.Name
        Dim dr1 As DataRow
        Dim dr2 As DataRow
        Dim dr3 As DataRow
        For Each nm As String In User.Roles.Split(",")
            dr1 = DataTables("授权表三").Find("表名 = \'" & e.Node.Name & "\' and 非受限角色 like \'%" & nm & "%\'")
            dr2 = DataTables("授权表三").Find("表名 = \'" & e.Node.Name & "\' and 受限角色 like \'%" & nm & "%\' and 列内容 is not null")
            dr3 = DataTables("授权表三").Find("表名 = \'" & e.Node.Name & "\' and 用户名列 = 1")
            If dr1 IsNot Nothing And Tables.Contains(e.Node.Name) Then
                DataTables(e.Node.Name).LoadFilter = ""
            ElseIf dr1 Is Nothing And dr2 IsNot Nothing And Tables.Contains(e.Node.Name) Then
                DataTables(e.Node.Name).LoadFilter = dr2("列名") & " In ( \'" & dr2("列内容").replace(",","\',\'") & "\')"
            ElseIf dr1 Is Nothing And dr2 Is Nothing And dr3 IsNot Nothing And Tables.Contains(e.Node.Name) Then
                DataTables(e.Node.Name).LoadFilter = dr3("列名") & " = \'" & User.Name & "\'"
            End If
        Next
        If Tables.Contains(e.Node.Name) Then
            DataTables(e.Node.Name).Load
        End If
End Select

[此贴子已经被作者于2021/8/7 14:32:31编辑过]