我正在使用 Access 2003 VBA 来处理制造 BOM 的递归数据。我构建了一个类模块,让我的主表具有静态范围。这似乎简化了递归——当我遍历 BOM 时,它让我不必再向下和向上计数级别。我不会重复地打开同一个记录集;我过滤了很多。
在开始这项工作后,我阅读了有关对象关系建模的内容,并决定实例化不是记录集,而是记录。那么该记录的字段可能是属性。经过大量的工作和许多大多是错误的胜利的快感之后,我意识到这种方法没有任何好处,因为 Access 是基于表的。
我的课程模块仍然像以前一样有帮助。我的问题是关于以下两个替代版本。第一个使用两个实例(父、子)。第二个使用一个,然后重用它。显然第一个是受 ORM 影响的。
有什么理由选择其中一个而不是另一个?另外,请注意最后的斜体线:如果我不需要(因为我不需要有关父级的更多信息),那会改变答案吗?任何人都可以帮助我总体思考吗?
(请注意,我关闭记录集而不是类实例。我的理解是 VBA 实例关闭自己并让他们这样做是公认的做法。我似乎已经将伪代码提升到新的伪水平......目标是清晰,希望有用。)
版本 1 属性子 ReviewPart ( Parent_Part_ID ) 获取 Parent_Part_ID 创建类的实例 --> 获取记录集 筛选类记录集 (Parent_Part_ID) 利用类记录集 查看 Parent_Part_ID 是否有 Childs 如果是这样: 打开 Childs 的记录集 对于每个孩子 获取 Child_Part_ID 创建类的实例 --> 获取记录集 筛选类记录集 ( Child_Part_ID ) 利用类记录集 查看 Child_Part_ID 是否有 Childs 如果是这样: 实例新 ReviewPart ( Child_Part_ID ) 除此以外: 没有; 继续 下一个孩子 关闭 Childs 的记录集 除此以外: 继续 Exploit Class 记录集(仍然指向父级)
版本 2 属性子 ReviewPart ( Parent_Part_ID ) 获取 Parent_Part_ID 创建类的实例 --> 获取记录集 筛选类记录集 (Parent_Part_ID) 利用类记录集 查看 Parent_Part_ID 是否有 Childs 如果是这样: 打开 Childs 的记录集 对于每个孩子 获取 Child_Part_ID创建类的实例 --> 获取记录集筛选类记录集 ( Child_Part_ID ) 利用类记录集 查看 Child_Part_ID 是否有 Childs 如果是这样: 实例新 ReviewPart ( Child_Part_ID ) 除此以外: 没有; 继续 下一个孩子 关闭 Childs 的记录集 除此以外: 继续 过滤类记录集(Parent_Part_ID) 利用类记录集(仍然指向父类)