以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  窗口代码报错。帮忙看一下  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=171502)

--  作者:夜点蚊香
--  发布时间:2021/9/1 11:20:00
--  窗口代码报错。帮忙看一下
Dim tpb As WinForm.TopicBar = e.Form.Controls("菜单")
For Each page As WinForm.TopicPage In tpb.Pages
    page.Visible = False
Next
For Each dr As DataRow In DataTables("授权表").Select("用户 = \'" & _UserGroup & "\'" )
    If dr.IsNull("列名") Then
        \'tpb.Pages(dr("菜单")).Visible = Not dr("不可见")
        tpb.Pages(dr("菜单")).Visible = True
    End If
Next
If _UserGroup = "超级管理员" Then
    For Each page2 As WinForm.TopicPage In tpb.Pages
        page2.Visible = True
    Next
End If
上面的代码是权限代码 打开时根据不同的权限显示不同页面。
报错内容如下。

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.5.12.1
错误所在事件:窗口,导航,AfterLoad
详细错误信息:
未设置对象变量或 With 块变量。

--  作者:有点蓝
--  发布时间:2021/9/1 11:27:00
--  
应该是菜单列数据和任务栏的名称不是一致

For Each dr As DataRow In DataTables("授权表").Select("用户 = \'" & _UserGroup & "\'" )
    If dr.IsNull("列名") Then
        msgbox(dr("菜单"))
        msgbox(tpb.Pages(dr("菜单")) is nothing)
        tpb.Pages(dr("菜单")).Visible = True
    End If
Next

--  作者:夜点蚊香
--  发布时间:2021/9/2 7:57:00
--  问题找到了,帮忙解决一下 10条数据以内不会出错,从11条开始报错。
数据表中单个用户 可以查看的权限表超过10个 就会报错。。10个以内(包括10个)不会报错。
[此贴子已经被作者于2021/9/2 8:01:46编辑过]

--  作者:有点蓝
--  发布时间:2021/9/2 8:51:00
--  
代码?错误提示?http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=150626
--  作者:夜点蚊香
--  发布时间:2021/9/2 9:33:00
--  
报错代码
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.5.12.1
错误所在事件:窗口,导航,AfterLoad
详细错误信息:
未设置对象变量或 With 块变量。

事件代码
If _UserGroup <> "超级管理员" Then
    Dim tpb As WinForm.TopicBar = e.Form.Controls("菜单")
    For Each page As WinForm.TopicPage In tpb.Pages
        page.Visible = False
    Next
    For Each dr As DataRow In DataTables("授权表").Select("")
        If dr.IsNull("用户") = False Then
            Dim nms() As String = dr("用户").Split(",")
            For Each nm As String In nms
                If nm = _UserGroup OrElse nm = _UserName Then \'如果授权用户包括登录用户所属的分组或其用户名
                    Dim tpb1 As WinForm.TopicBar = e.Form.Controls("菜单")
                    tpb1.Pages(dr("菜单")).Visible = Not dr("不可见")
                End If
            Next
        End If
    Next
End If

问题 菜单列可以有超过10列的值 , 对应的用户列(相同的用户)只能填写对应10个菜单列的,如果用户列对应菜单列超过10条数据,就会报错。10条以内没有问题。
[此贴子已经被作者于2021/9/2 9:39:41编辑过]

--  作者:有点蓝
--  发布时间:2021/9/2 9:39:00
--  
菜单列数据和任务栏的名称不一致
                    Dim tpb1 As WinForm.TopicBar = e.Form.Controls("菜单")
       msgbox(dr("菜单"))
        msgbox(tpb1.Pages(dr("菜单")) is nothing)
                    tpb1.Pages(dr("菜单")).Visible = Not dr("不可见")

学不会调试就上传实例


--  作者:夜点蚊香
--  发布时间:2021/9/2 9:43:00
--  
实例已上传   打开导航的时候 用的是授权表
教师 用户名  cs 密码 0  不会报错
学生 用户名  xs 密码 0 会报错
[此贴子已经被作者于2021/9/2 9:43:32编辑过]

--  作者:夜点蚊香
--  发布时间:2021/9/2 10:31:00
--  实例已上传。


实例已上传   打开导航的时候 用的是授权表
教师 用户名  cs 密码 0  不会报错
学生 用户名  xs 密码 0 会报错

[此贴子已经被作者于2021/9/2 14:15:42编辑过]

--  作者:有点蓝
--  发布时间:2021/9/2 11:09:00
--  
怎么测试?使用哪个账户登录测试?
--  作者:夜点蚊香
--  发布时间:2021/9/2 11:26:00
--  
开发者账户  密码888 登陆

然后会启动 窗口 登陆界面

教师 用户名  cs   密码  0   正常登陆   不会报错
学生 用户名 xs    密码 0   正常登陆  会报错误代码