【问题标题】:Implement a multi level outline structure实施多层次大纲结构
【发布时间】:2017-07-03 00:56:35
【问题描述】:

我需要为 Microsoft Access 2013 中的需求管理设置和管理多层次大纲结构。

  • outline 需要像单词大纲一样工作,其中每条记录只能有 1 个父项,但可以有 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

【问题讨论】:

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


    【解决方案1】:

    这在 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 确实有一个等效于 SQL-Server 的“触发器”功能,称为data macro,但我从未使用过它。也许这可以帮助你?

    【讨论】:

    • 感谢您提供的信息,我同意这绝非易事。我看到了一种类似于您在我们也使用的开源工具中描述的方法。不幸的是,该工具有一个损坏轮廓结构的代表,事实上,我已经找到并修复了与此相关的代码的 2 个错误。它并没有使这个概念无效,而是说明了这种结构的管理难度。不幸的是,我在这个项目上工作的限制迫使我们不要尝试管理大纲结构,而是将其留给用户。
    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多