实现多级大纲结构

时间:2017-02-14 16:22:11

标签: sql access-vba ms-access-2013

我需要为Microsoft Access 2013中的需求管理设置和管理多级概要结构。

  • 大纲需要像字大纲一样工作,每个记录只能有一个父母,但可以有一个或多个兄弟姐妹(兄弟姐妹的顺序很重要)和0到多个孩子。
  • 需要支持尽可能多的大纲级别,当前数据超过15个级别,但尽可能减少。
  • 需要能够确定记录是否有子女,兄弟姐妹以及父母是什么。
  • 需要能够在删除记录时删除记录的所有子项。
  • 需要能够在大纲结构中的记录之后或之下添加新记录
  • 在大纲结构中完成添加,删除,复制和移动时,需要能够对轮廓重新编号。

当前方法是一个表,其中包含一个唯一的ID,大纲#的每个单独级别#的15个数字字段,并使用一些数字字段组织成大纲顺序。

遇到与这种情况有关的几个问题:

  1. 这是最好的数据结构方法还是应该将大纲信息移到单独的表中?
  2. 鉴于我在查询中使用大纲顺序排序,我可以将VBA函数编写为计算列,以确定记录的父级,是否有兄弟,以及是否有子级。
  3. 是否可以/实际在vba中执行sql select来查询我所在的同一个表/查询以获取记录父,子,兄弟姐妹作为计算列?
  4. 是否可以使用数据触发器来支持对此大纲结构的任何管理。
  5. 大纲结构示例: 1 1.1 1.1.1 1.1.2 1.1.2.1 1.1.2.2 1.1.3 2 2.1 2.2 2.3 2.3.1 2.3.1.1 2.3.1.1.1

1 个答案:

答案 0 :(得分:0)

这在Access中并不是一件轻而易举的事。为了最大程度地提高级别的灵活性,我不会对级别编号使用单独的字段,而是使用具有列ID,NodeNumber,OutlineNumber,ParentID的自引用表(NodeNumber将是一个单个数字,表示此记录所属的兄弟给定的父级 - 1,2,3 - 和OutlineNumber将是此记录的完整大纲参考 - 1.2.1,1.2.2,1.2.3)。您可以使用ParentID来标识记录的父级;查询具有相同ParentID的所有记录以查找兄弟姐妹;查询记录其中ParentID =当前记录的ID以查找子项。您将不得不编写一些严格的VBA代码来控制插入,更新和删除,并且绝对不允许人们手动将数据添加到表中。不幸的是,Access没有数据触发器。

[编辑]显然我错了! Access确实具有相当于名为data macro的SQL-Server“触发器”功能,但我从未使用它。也许这可以帮到你?