|

|
|
 |
2.7 レコードセットの操作/移動 |
 |
|
|
|
|
|
レコードセットオブジェクト内のレコードを順読みしたり、逆順読みしたりする方法です。
順読みをするときは、レコードセットオブジェクトのMoveNextというメソッド、逆順読みをするときは、レコードセットオブジェクトのMovePreviousというメソッドを実行します。
|
|
|
|
|
|
|
|
|
|
まずは、レコードの順読みです。順読みとは、現在読み込まれているレコードの次のレコードを読み込む動作です。順読みを行う場合は、レコードセットオブジェクトのMoveNextメソッドを使います。
順読みを行っていると、いつかは最終レコードに達し読み込みが出来ない状態になりますが、順読みの場合(最終レコードに達している)の検知はレコードセットオブジェクトのEOFプロパティで行います。このプロパティの内容が、Trueならレコード終了(これ以上レコードが無い)、Falseならレコード有り(次のレコード有り)です。
例では、「住所録テーブル」というテーブルをオープンした後、MoveNextでレコードを最後まで順読みしています。
Sub prcMoveNext2000()
'Access VBA Tips
'2.7 レコードセットの操作/移動
'Access2000以降での手順
Dim daoDB As DAO.Database
Dim daoRS As DAO.Recordset
'データベースのオープン(データベースオブジェクトの作成)
Set daoDB = CurrentDb
'テーブルのオープン(レコードセットの作成)
Set daoRS = daoDB.OpenRecordset("住所録テーブル", dbOpenDynaset)
'最終レコードまで順読み込みを行う
Do Until daoRS.EOF = True
'イミディエイトウィンドウへ漢字氏名を表示します
Debug.Print daoRS("漢字氏名")
'レコードの順読み
daoRS.MoveNext
Loop
'テーブルのクローズ
daoRS.Close
'データベースのクローズ
daoDB.Close
End Sub
|
※Access2000以降の場合。ただし、DAOを使う場合は参照設定が必要です。
Sub prcMoveNext97()
'Access VBA Tips
'2.7 レコードセットの操作/移動
'Access97までの手順
Dim daoDB As Database
Dim daoRS As Recordset
'データベースのオープン(データベースオブジェクトの作成)
Set daoDB = DBEngine.Workspaces(0).Databases(0)
'テーブルのオープン(レコードセットの作成)
Set daoRS = daoDB.OpenRecordset("住所録テーブル", DB_OPEN_DYNASET)
'最終レコードまで順読み込みを行う
Do Until daoRS.EOF = True
'イミディエイトウィンドウへ漢字氏名を表示します
Debug.Print daoRS("漢字氏名")
'レコードの順読み
daoRS.MoveNext
Loop
'テーブルのクローズ
daoRS.Close
'データベースのクローズ
daoDB.Close
End Sub
|
※Access97までの場合。
|
|
|
|
|
|
|
|
|
|
次に、レコードの逆順読みです。逆順読みとは、現在読み込まれているレコードの1つ前のレコードを読み込む動作です。逆順読みを行う場合は、レコードセットオブジェクトのMovePreviousメソッドを使います。
逆順読みを行っていると、いつかは先頭レコードに達し読み込みが出来ない状態になりますが、逆順読みの場合(先頭レコードに達している)の検知はレコードセットオブジェクトのBOFプロパティで行います。このプロパティの内容が、Trueならレコード終了(これ以前のレコードが無い)、Falseならレコード有り(1つ前のレコード有り)です。
例では、「住所録テーブル」というテーブルをオープンした後、MoveLastメソッドで最終レコードへ移動し、その後MovePreviousでレコードを先頭まで逆順読みしています。
Sub prcMovePrevious2000()
'Access VBA Tips
'2.7 レコードセットの操作/移動
'Access2000以降での手順
Dim daoDB As DAO.Database
Dim daoRS As DAO.Recordset
'データベースのオープン(データベースオブジェクトの作成)
Set daoDB = CurrentDb
'テーブルのオープン(レコードセットの作成)
Set daoRS = daoDB.OpenRecordset("住所録テーブル", dbOpenDynaset)
'最終レコードへ移動
daoRS.MoveLast
'先頭レコードまで逆順読み込みを行う
Do Until daoRS.BOF = True
'イミディエイトウィンドウへ漢字氏名を表示します
Debug.Print daoRS("漢字氏名")
'レコードの逆順読み
daoRS.MovePrevious
Loop
'テーブルのクローズ
daoRS.Close
'データベースのクローズ
daoDB.Close
End Sub
|
※Access2000以降の場合。ただし、DAOを使う場合は参照設定が必要です。
Sub prcMovePrevious97()
'Access VBA Tips
'2.7 レコードセットの操作/移動
'Access97までの手順
Dim daoDB As Database
Dim daoRS As Recordset
'データベースのオープン(データベースオブジェクトの作成)
Set daoDB = DBEngine.Workspaces(0).Databases(0)
'テーブルのオープン(レコードセットの作成)
Set daoRS = daoDB.OpenRecordset("住所録テーブル", DB_OPEN_DYNASET)
'最終レコードへ移動
daoRS.MoveLast
'先頭レコードまで逆順読み込みを行う
Do Until daoRS.BOF = True
'イミディエイトウィンドウへ漢字氏名を表示します
Debug.Print daoRS("漢字氏名")
'レコードの逆順読み
daoRS.MovePrevious
Loop
'テーブルのクローズ
daoRS.Close
'データベースのクローズ
daoDB.Close
End Sub
|
※Access97までの場合。
|
|
|
|
|