2017-04-06 16 views
0

私はバーfooの子であるネストされたデータシートを持っています。 FOOのすべてのレコードをループしMS Accessのループスルーサブレコード

は、私は単に

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

あなたが持っている関係は、親レコードの現在(可視)レコードに属するサブレコードです。

残りのサブレコードを取得するには、メインフォーム(ブックマークを使用)でレコードを移動するか、サブフォームのレコードソースを開き、現在のループ( "foo")の親レコードのキーにこのフィルタリングをループします。 。

+0

あなたの最初の提案を取るならば、 'rst.MoveNext'の後に' Me.Bookmark = rst.Bookmark'をする必要がありますか?代わりに表示されたレコードセットを複製せずに移動するのは悪いスタイルですか? – Nikno

+0

UIを操作するのは面倒なスタイルですが、レコードを数えるだけでなく、静かで速く、同様の音量と複雑さのコードで簡単に行うことができます。 – Gustav