0

我正在尝试构建一个将在 6 个工作站点中使用的应用程序。我希望在同一个申请中提交所有员工的详细信息,并且每个员工都会有一个分配给他们的“站点”(他们工作的城市)。当该站点的经理使用该应用程序时,我希望他们只看到他们有权访问的站点中的员工。

我已经为此苦苦挣扎了一段时间。我已经设置了所有表格和页面,以便可以看到所有员工。我创建了用户组并将不同的用户分配给不同的组(站点)。我不知道如何限制访问甚至引用分配给用户的组。

对此主题的任何帮助将不胜感激。

先感谢您

4

1 回答 1

0

我自己找到了合适的解决方案。我创建了一个名为“Tbl_000_UserAccess”的表在这个表中有 3 列(ID、USER ID、Site ID)。

我将他们可以查看的用户和站点 ID 添加到此表中。

然后我在员工表上创建一个视图,将记录限制为当前用户的用户 ID。这是我对任何感兴趣的人的视图编码:

CREATE OR REPLACE FORCE VIEW "Vw_010_Staff" ("ID", "Emp No.", "First Name", "Last Name", "Team Leader", "Coach", "JE", "CD", "IRE", “FAM”、“GB”、“GST”、“Emp”、“SLS”、“Bus RADC”、“KS Ind”、“KS N Ind”、“Anon”、“OB”、“辞职”、“原因” ", "Site") AS 选择 "Tbl_010_Staff"。"ID" 作为 "ID","Tbl_010_Staff"。"Employee Number" 作为 "Emp No.","Tbl_010_Staff"。"First Name" 作为 "First Name"," Tbl_010_Staff"."Last Name" 为 "Last Name", "Tbl_011_TeamLeaders"."First Name" || ' ' || "

from (((("Tbl_010_Staff" left outer join "Tbl_011_TeamLeaders" on "Tbl_010_Staff"."Team Leader" = "Tbl_011_TeamLeaders"."ID")
    left outer join "Tbl_012_Coaches" on "Tbl_010_Staff"."Coach" = "Tbl_012_Coaches"."ID")
left outer join "Tbl_014_JE" on "Tbl_010_Staff"."JE" = "Tbl_014_JE"."ID")
left outer join "Tbl_000_UserAccess" on "Tbl_010_Staff"."Site" = "Tbl_000_UserAccess"."SiteID")

**where "Tbl_000_UserAccess"."SiteID" =
(Select "Tbl_000_UserAccess"."SiteID" 
    from "Tbl_000_UserAccess"
    where "Tbl_000_UserAccess"."UserID" = NVL(v('APP_USER'),USER))**

这非常有效。唯一令人烦恼的是,当将用户添加到架构中时,我还需要在 useraccess 表中添加一条记录。请注意,用户 ID 区分大小写

希望这可以帮助

于 2013-08-01T20:19:57.327 回答