2017-04-06 39 views
0

我有一个嵌套的数据表,其中barfoo的子码。在MS Access中通过子记录循环

要遍历FOO的所有记录,我只想做

Dim rst As DAO.Recordset 
Set rst = Forms!foo.Form.RecordsetClone 

Do Until rst.EOF 
    'Do Something 
    rst.MoveNext 
Loop 

但现在我想通过它的子窗体酒吧的所有记录循环。我试过

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

您拥有的关系是属于父记录的当前(可见)记录的子记录。

要检索剩余的子记录,请移动主窗体上的记录(使用Bookmark)或打开子窗体的记录源,并在当前循环(“foo”)的父记录的键上循环此筛选。

+0

因此,如果我采取你的第一个建议,我需要在'rst.MoveNext'之后执行'Me.Bookmark = rst.Bookmark'?如果没有克隆而是通过显示的记录集移动,这是不好的风格吗? – Nikno

+0

操作用户界面仅用于记录记录的风格很糟糕,而且当它可以轻松快速地以及以相似体积和复杂度的代码轻松完成时,这种风格也会变得更慢。 – Gustav