以文本方式查看主题

-  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=24204)

--  作者:zpx_2012
--  发布时间:2012/10/7 23:50:00
--  自定义权限管理后关联表显示不出来?已解决!!

各位老师,

 如下图,


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


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

自定义管理权限,在项目的afteropenProject中用了如下代码:

 \'让所有表及列均不可见及不可编辑.
    For Each t As Table In Tables
        t.Visible = False
        t.AllowEdit = False
        For Each c As Col In t.Cols
            c.Visible = False
            c.AllowEdit =  False
        Next
    Next

然后在用户登陆窗口中设计了不同用户的查看和编辑权限的代码,动态加载也在主表的afterload中用了加载关联表数据的代码如下:
Select Case e.DataTable.Name
    Case "订单"
        If DataTables("订单").DataRows.Count = 0 Then \'如果订单表没有数据
            DataTables("订单明细").LoadFilter = "订单编号 Is Null" \'不加载订单明细
        Else
            Dim ids As String
            For Each dr As DataRow In DataTables("订单").DataRows
                ids = ids & ",\'" & dr("订单编号") & "\'"
            Next
            ids= ids.Trim(",")
            DataTables("订单明细").LoadFilter = "订单编号 In (" & ids & ")"
        End If
        DataTables("订单明细").Load()
  

主表和子表的数据都可以按权限正确显示,但关联表却显示不出来,请问是什么原因?

 

谢谢!

 

[此贴子已经被作者于2012-10-8 18:04:36编辑过]

--  作者:blackzhu
--  发布时间:2012/10/8 7:34:00
--  
貌似你的列给隐藏了。
--  作者:lin_hailun
--  发布时间:2012/10/8 9:01:00
--  
 如楼上所说,你应该是隐藏了关联表的列。
--  作者:zpx_2012
--  发布时间:2012/10/8 13:20:00
--  

谢谢两位老师,不是我隐藏了,而是项目事件中的这个代码打开时造成的,

 

在项目的afteropenProject中用了如下代码:

 \'让所有表及列均不可见及不可编辑.
    For Each t As Table In Tables
        t.Visible = False
        t.AllowEdit = False
        For Each c As Col In t.Cols
            c.Visible = False
            c.AllowEdit =  False
        Next
    Next

 

但我在用户登陆的代码中又根据权限表让其可查看及编辑如下:

 

Dim drs As List(Of DataRow)
        drs = DataTables("授权表").Select("[部门] = \'" & MyGroup & "\' And 角色 in (" & R & ")")
        If drs.count < 1 Then
            MessageBox.Show("你还没有被授权,不能查看及编辑任何数据,请联系管理员授权!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            e.Form.Close()
            Syscmd.Project.Exit()
        Else
            e.Form.Close()
            For Each dr1 As DataRow In drs
                If dr1.IsNull("可查看列") = False Then
                    Tables(dr1("表名")).Visible = True
                End If
                If dr1.IsNull("可编辑列") = False Then
                    Tables(dr1("表名")).AllowEdit = True
                End If
                For Each tb As Table In Tables
                    If tb.name = dr1("表名") Then
                        For Each c As Col In tb.Cols
                            Dim a As String = c.name
                            If dr1("可查看列").contains(a) Then
                                c.Visible = True
                            End If
                            If dr1("可编辑列").contains(a) Then
                                c.AllowEdit = True
                            End If
                        Next
                    End If
                Next
            Next
            \'设置导航
            Forms("导航").Open()
            \'设置权限
        End If


 

而且登陆后“订单”及“订单明细”都有显示正确的数据,只是这个订单主表下面的关联表(订单.订单明细)却没有?


--  作者:blackzhu
--  发布时间:2012/10/8 13:52:00
--  
你把权限表截图看看.
--  作者:zpx_2012
--  发布时间:2012/10/8 14:51:00
--  

下面是授权表中的截图,以前的那些截图中我以生产部经理登陆时弄的。

 


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

 


--  作者:lin_hailun
--  发布时间:2012/10/8 15:33:00
--  
 订单.订单明细 也是一个Table,这个表的列没有被显示出来。

--  作者:zpx_2012
--  发布时间:2012/10/8 18:04:00
--  

谢谢lin_hailun,blackzhu,

原来订单.订单明细这样的关联表也要在授权表中授权,原以为只是主表和子表授权就可以,解决了。