Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 用表格表示的组织结构图_Ms Access_Hierarchy_Organization - Fatal编程技术网

Ms access 用表格表示的组织结构图

Ms access 用表格表示的组织结构图,ms-access,hierarchy,organization,Ms Access,Hierarchy,Organization,我有一个Access应用程序,其中有一个employee表。员工是组织中几个不同级别的一部分。该组织有1名总经理,5名部门负责人,每个部门负责人下面有几个主管,这些主管下面是工人 根据员工的职位,他们只能访问下属的记录 我想用某种级别系统在表中表示组织。我看到的问题是,同一级别上有许多ppl,例如主管,但他们不应该访问另一个部门主管的记录。我应该如何解决这个问题?在数据库中保存此类分层数据的一种常见方法是只使用一个表,其中包含如下字段: 用户标识主键 用户名 supervisorId自引用外键,

我有一个Access应用程序,其中有一个employee表。员工是组织中几个不同级别的一部分。该组织有1名总经理,5名部门负责人,每个部门负责人下面有几个主管,这些主管下面是工人

根据员工的职位,他们只能访问下属的记录


我想用某种级别系统在表中表示组织。我看到的问题是,同一级别上有许多ppl,例如主管,但他们不应该访问另一个部门主管的记录。我应该如何解决这个问题?

在数据库中保存此类分层数据的一种常见方法是只使用一个表,其中包含如下字段:

用户标识主键 用户名 supervisorId自引用外键,引用同一表中的另一个用户ID 位置代码可以很简单,比如1=lakey,2=supervisor;或指向另一个位置表的外键等 …您需要为每位员工存储的其他内容。。。 然后,您的应用程序使用SQL查询来计算权限。例如,要计算允许用户ID为“3”的主管“X”查看的员工,可以查询supervisorId=3的所有员工

如果你想让上级老板能够看到他们下面的每个人,最简单的方法就是进行递归搜索。也就是说,查询向这位大老板汇报的每个人,并查询向他们汇报的每个人,一直到树下

这有意义吗?您可以让数据库对所有用户进行排序,因为计算机擅长这类工作

我在本例中添加了位置代码,以防您希望某些人拥有不同的权限。。。例如,对于有权查看所有员工列表的HR员工,您可能有代码“99”

也许我会让其他人更好地解释

他还指出了这两种方法在谈到表的非规范化时的一些困难。
为什么不概述一下您正在考虑的方法呢?这可能会产生更多的响应,并将问题带入编程领域,我认为这是无论如何的,因为模式设计是应用程序设计的一部分,即使它不涉及任何实际的代码冲击。您能帮我一点SQL查询吗?你认为这样做行吗?SELECT*FROM tblemployee WHERE userId在SELECT userId FROM tblemployee WHERE SupervisorId=3中选择*不确定双层查询的目的是什么。要获取向用户ID为3的主管报告的所有员工,您只需从tblemployee中选择*,其中SupervisorId=3。如果您试图将所有员工置于高级经理之下。。。我不相信MS Access可以在SQL中进行真正的递归查询;但是你可以使用VBA代码,我不能在这里为你写出来。但其思想是这样的:创建一个名为GetAllReports的函数,为它提供您要检查的主管的id,让它执行以下操作:1查询所有id,其中他们的主管是您提供给它的id,2查询找到的每个id,为该id再次运行并保留结果,和3返回从初始查询和每次运行GetAllReports时收集的所有ID。