2017-02-14 64 views
0

我需要设置并在Microsoft Access管理需求管理的多层次大纲结构2013年实现多级大纲结构

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

目前的方法是包含一个唯一的ID,用于轮廓#的每个单独的等级#15的数字字段,并且使用排序的数字字段的组织进入轮廓顺序的表。

运行到几个问题,与此相关的情况:

  1. 这是最好的数据结构的方法或我应该搬到概括信息到一个单独的表?
  2. 假设我处于一个带轮廓顺序排序的查询中,是否可以编写一个VBA函数作为计算列以确定记录的父项,如果它有兄弟并且它有子项。
  3. 在vba中执行sql select以查询与计算列相同的表/查询是否可以/实际地获取记录父,孩子,兄弟姐妹作为计算列?
  4. 是否可以使用数据触发器来支持这个大纲结构的任何管理。大纲结构的

例子: 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

回答

0

这不会是在访问所有琐碎。为了在级别数量上有最大的灵活性,我不会为级别数字使用单独的字段,而是会使用具有列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与SQL-Server的“触发器”功能具有相同的功能,称为data macro,但我从未使用它。也许这可以帮助你?

+0

感谢您提供的信息,我同意这不是微不足道的。我已经看到了一种类似于您所描述的我们也使用的开源工具中使用的方法。不幸的是,该工具有一个损坏的大纲结构的代表,事实上,我已经必须找到并修复与其相关的代码的2个错误。它并没有使这个概念失效,而是说明了这种类型的结构难以管理的难度。不幸的是,我在这个项目中工作的限制迫使我们不去尝试管理大纲结构,而是将其留在用户手中。 – Warden