以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]代码报错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=145194)

--  作者:紫色幽魂
--  发布时间:2020/1/11 17:28:00
--  [求助]代码报错
下面这段代码执行到这儿就报错,是怎么回事
For Each rb As RibbonMenu.Tab In RibbonTabs
    Dim dr1 As DataRow = DataTables("用户权限_菜单权限").SQLFind("一级菜单_名称 = \'"& rb.Name &"\' and 二级菜单_名称 is null and 三级菜单_名称 is null")
    Dim sz1 As String = dr1("角色")
    Dim jh1 As new List(of String)
    jh1.AddRange(sz1.Split(","))
    For Each str1 As String In jh1
        If _usergroup.Contains(str1)
            rb.Visible = True
        Else
            rb.Visible = False
        End If
    Next
    For Each gp As RibbonMenu.Group In rb.Groups
        Dim dr2 As DataRow = DataTables("用户权限_菜单权限").SQLFind("一级菜单_名称 = \'"& rb.Name &"\' and 二级菜单_名称 = \'"& gp.Name &"\' and 三级菜单_名称 is null")
        Dim sz2 As String = dr2("角色")
        Dim jh2 As new List(of String)
        jh2.AddRange(sz2.Split(","))
        For Each str2 As String In jh2
            If _usergroup.Contains(str2)
                gp.Visible = True
            Else
                gp.Visible = False
            End If
        Next
        For Each itm As RibbonMenu.RibbonItem In gp.Items
            Dim dr3 As DataRow = DataTables("用户权限_菜单权限").SQLFind("一级菜单_名称 = \'"& rb.Name &"\' and 二级菜单_名称 = \'"& gp.Name &"\' and 三级菜单_名称 = \'"& itm.Name &"\'")
            Dim sz3 As String = dr3("角色")
            Dim jh3 As new List(of String)
            jh3.AddRange(sz3.Split(","))
            For Each str3 As String In jh3
                If _usergroup.Contains(str3)
                    itm.Visible = True
                Else
                    itm.Visible = False
                End If
            Next
        Next
    Next
Next

--  作者:有点蓝
--  发布时间:2020/1/11 17:35:00
--  
报什么错?

下面都是些什么值?
msgbox( sz2)
msgbox(_usergroup)

--  作者:紫色幽魂
--  发布时间:2020/1/11 17:38:00
--  回复:(有点蓝)报什么错?下面都是些什么值?msgbox...

图片点击可在新窗口打开查看此主题相关图片如下:tim截图20200111172707.png
图片点击可在新窗口打开查看
我测试这段也报相同错误错
Output.Show(_UserGroup)
我先将菜单储存在一个表中,循环拆解角色与表单中的角色比较,有就显示菜单,没有就不显示菜单

找到问题了,是下面这段代码获取值有问题,我用SQLGetComboListString获取不到数值,但是用GetComboListString可以获取到数值,这个是怎么回事
Dim s As String  = DataTables("用户权限_角色").SQLGetComboListString("角色","用户 like \'*"& username &"*\'")

[此贴子已经被作者于2020/1/11 21:11:46编辑过]

--  作者:有点蓝
--  发布时间:2020/1/12 20:14:00
--  
改为这样试试
Dim s As String  = DataTables("用户权限_角色").SQLGetComboListString("角色","用户 like \'%" & username & "%\'")

msgbox("用户 like \'%" & username & "%\'") ‘这里显示什么内容?

--  作者:紫色幽魂
--  发布时间:2020/1/14 9:06:00
--  回复:(有点蓝)改为这样试试Dim s As String  ...
可以了,这两个匹配模糊值的时候为什么还不一样呢
--  作者:有点蓝
--  发布时间:2020/1/14 9:33:00
--  
这个得问微软了。一般建议优先使用%