以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  角色显示问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192012)

--  作者:wlj88868
--  发布时间:2024/5/23 16:24:00
--  角色显示问题
老师你好,,角色定义了一个公司,,登入是这个角色的=列管辖部门的显示,其他的不会显示,需要怎么做呀
图片点击可在新窗口打开查看此主题相关图片如下:1716451991895.png
图片点击可在新窗口打开查看

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

--  作者:有点蓝
--  发布时间:2024/5/23 16:34:00
--  
如果是外部表,BeforeLoadOuterTable事件

If e.DataTableName = "某表" Then
    e.S
electString = "Select * From {
某表} Where [部门] in (\'" & e.user.Roles.replace(",","\',\'") & "\')"
End If

如果是点击某按钮加载数据的

datatables("某表").loadfilter = "[部门] in (\'" & user.Roles.replace(",","\',\'") & "\')"
datatables("某表").load

--  作者:wlj88868
--  发布时间:2024/5/23 17:02:00
--  

内部表,,这个就要一个一个表设置吗,,全局的不行吗,登入的时候直接给限制了

 


--  作者:有点蓝
--  发布时间:2024/5/23 17:06:00
--  
内部表:http://www.foxtable.com/webhelp/topics/0669.htm

如果所有表都有部门列,这样即可
e.Filter = "[部门] in (\'" & user.Roles.replace(",","\',\'") & "\')"

如果只是部分表有部门列

select case e.DataTableName
case "表A","表B",.........
e.Filter = "[部门] in (\'" & user.Roles.replace(",","\',\'") & "\')"
end select

--  作者:wlj88868
--  发布时间:2024/5/23 17:39:00
--  
select case e.DataTableName
case "开票资料","销售资料"
e.Filter = "[管辖部门] in (\'" & user.Roles.replace(",","\',\'") & "\')"
end select
 
加了这句试了一下,,报错

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

--  作者:wlj88868
--  发布时间:2024/5/23 18:51:00
--  
不好意思老师,,,好像是切换用户的问题,,我在切换用户里面也加上代码,好像不报错了
--  作者:有点蓝
--  发布时间:2024/5/23 20:13:00
--  
select case e.DataTableName
case "开piao资料","销售资料"
e.Filter = "[管辖部门] in (\'" & e.user.Roles.replace(",","\',\'") & "\')"
end select

--  作者:wlj88868
--  发布时间:2024/5/24 9:06:00
--  

Dim Filter As String
With e.Form.Controls("combobox1")
    If .Value IsNot Nothing Then
        Filter = "品牌 like \'%" & .Value & "%\'"
    End If
End With
With e.Form.Controls("combobox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "销售型号 like\'%" & .Value & "%\'"
    End If
End With
With e.Form.Controls("combobox12")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "销售商场  like\'%" & .Value & "%\'"
    End If
End With
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "销售日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "销售日期 <= #" & .Value & "#"
    End If
End With
If user.IsRole("管辖部门") Then
    If Filter > "" Then
        Filter = Filter & " and "
    End If
    Filter = "[管辖部门] in (\'" & user.Roles.replace(",", "\',\'") & "\')"
End If
Dim bd1 As New SqlGroUPTableBuilder("查询表_table1", "销售资料")
Dim dt1 As fxDataSource
bd1.groups.AddDef("销售商场")\'根据型号分组
bd1.groups.AddDef("品牌")\'根据型号分组
bd1.Groups.AddDef("销售型号")\'根据型号分组
bd1.Groups.AddDef("管辖部门")\'根据型号分组
bd1.Groups.AddDef("销售日期", "月")
bd1.Totals.AddDef("数量")
bd1.Totals.AddDef("销售单价")
bd1.Filter = Filter
\'bd1.Subtotal = True
\'bd1.SubtotalLevel = 1
dt1 = bd1.BuildDataSource()
Tables("查询表_table1").DataSource = dt1 \'将统计结果绑定到Table
With Tables("查询表_Table1")
    Dim g As SubtotalGroup \'定义一个新的分组
    .SubtotalGroups.Clear() \'清除原有的分组
    g = New SubtotalGroup
    g.GroupOn = "月" \'分组列为客户
    g.TotalOn = "数量,销售单价" \'对数量和金额进行统计
    .SubtotalGroups.Add(g) \'加入刚刚定义的分组
    g = New SubtotalGroup
    g.GroupOn = "销售商场" \'分组列为客户
    g.TotalOn = "数量,销售单价" \'对数量和金额进行统计
    .SubtotalGroups.Add(g) \'加入刚刚定义的分组
    g = New SubtotalGroup
    g.GroupOn = "*" \'分组列为客户
    g.TotalOn = "数量,销售单价" \'对数量和金额进行统计
    .SubtotalGroups.Add(g) \'加入刚刚定义的分组
    .Subtotal() \'生成汇总模式  
End With
Tables("查询表_Table1").SysStyles("Subtotal0").BackColor = Color.LightSkyBlue\'小计行颜色
Tables("查询表_Table1").SysStyles("Subtotal1").BackColor = Color.Turquoise\'小计2颜色
Tables("查询表_Table1").Cols("销售商场").Width = 160\'列宽设置
Tables("查询表_Table1").Cols("销售型号").Width = 120\'列宽设置
Tables("查询表_Table1").Cols("数量").TextAlign = TextAlignEnum.Center\'数据居中
Tables("查询表_Table1").Cols("销售单价").TextAlign = TextAlignEnum.Center\'数据居中
Tables("查询表_Table1").Cols("月").TextAlign = TextAlignEnum.Center\'数据居中

 

 

 

老师麻烦在给看一下,,查询统计加的代码是不是错的,,也不报错,查询也不起作用

If user.IsRole("管辖部门") Then
    If Filter > "" Then
        Filter = Filter & " and "
    End If
    Filter = "[管辖部门] in (\'" & user.Roles.replace(",", "\',\'") & "\')"
End If


--  作者:有点蓝
--  发布时间:2024/5/24 9:09:00
--  
看看生成的条件

msgbox(Filter )

--  作者:wlj88868
--  发布时间:2024/5/24 9:28:00
--  

谢谢老师已经调试出来了,

多了一个if语句,就加这一句就可以了
Filter = "[管辖部门] in (\'" & user.Roles.replace(",", "\',\'") & "\')"