循环访问 MS Access 中的子记录
Posted
技术标签:
【中文标题】循环访问 MS Access 中的子记录【英文标题】:Loop through subrecords in MS Access 【发布时间】:2017-04-06 11:25:33 【问题描述】:我有一个嵌套数据表,其中 bar 是 foo 的子级。
要遍历 foo 的所有记录,我会这样做
Dim rst As DAO.Recordset
Set rst = Forms!foo.Form.RecordsetClone
Do Until rst.EOF
'Do Something
rst.MoveNext
Loop
但是现在我想遍历它的子表单bar的所有记录。我试过了
Dim rst As DAO.Recordset
Dim subrst As DAO.Recordset
Set rst = Forms!foo.Form.RecordsetClone
Do Until rst.EOF
Set subrst = Forms!foo.Form!bar.Form.RecordsetClone
Do Until subrst.EOF
'Do Something
subrst.MoveNext
Loop
rst.MoveNext
Loop
遗憾的是,这只循环遍历第一条记录的子记录。永远不会到达所有其他子记录。如何访问所有其他子记录的记录集?
【问题讨论】:
【参考方案1】:您拥有的关系是属于父记录的当前(可见)记录的子记录。
要检索剩余的子记录,要么在主窗体上移动记录(使用书签),要么打开子窗体的记录源并在当前循环(“foo”的)父记录的键上循环此过滤。
【讨论】:
所以如果我接受你的第一个建议,我需要在rst.MoveNext
之后执行Me.Bookmark=rst.Bookmark
?在没有克隆的情况下移动显示的记录集是不是很糟糕?
仅操作 UI 以计算记录是一种不好的风格,而且速度也慢得多,因为它可以很容易地以静默和更快的方式完成,并且代码量和复杂度相似。以上是关于循环访问 MS Access 中的子记录的主要内容,如果未能解决你的问题,请参考以下文章