DAO レコードセット内を移動する
Recordset オブジェクトは通常、現在の位置を持ち、ほとんどの場合はレコードにあります。 Recordset 内のフィールドを参照するとき、カレント レコードと呼ばれる現在位置のレコードから値を取得します。 ただし、現在位置が Recordset 内の先頭レコードの直前であったり、最終レコードの直後であったりする場合もあります。 現在位置が未定義となる特殊な状況もあります。
次の Move メソッドを使用して、 Recordset 内のレコードをループします。
MoveFirst メソッドは先頭レコードに移動します。
MoveLast メソッドは最終レコードに移動します。
MoveNext メソッドは次のレコードに移動します。
MovePrevious メソッドは 1 つ前のレコードに移動します。
Move メソッドは、構文で指定されたレコード数だけ前方または後方に移動します。
テーブルタイプ、ダイナセットタイプ、スナップショットタイプの Recordset オブジェクトでは、これらの各メソッドを使用します。 前方カーソル タイプの Recordset オブジェクトに対しては、MoveNext メソッドと Move メソッドだけを使用できます。 前方カーソル タイプの Recordset に対して Moveメソッドを使用する場合、移動する行数を指定する引数は正の整数である必要があります。
次のコード例では、ReportsTo フィールドに Null 値を持つすべてのレコードを含む Employees テーブルの Recordset オブジェクトを開きます。 関数ではその後、これらの社員が臨時社員であることを示すためにレコードを更新します。 Recordset の各レコードについて、例では [タイトル] フィールドと [メモ] フィールドを変更し、Update メソッドを使用して変更を保存します。 MoveNext メソッドを使って次のレコードに移動します。
Sub UpdateEmployees()
Dim dbsNorthwind As DAO.Database
Dim rstEmployees As DAO.Recordset
Dim strSQL As String
Dim intI As Integer
On Error GoTo ErrorHandler
Set dbsNorthwind = CurrentDb
' Open a recordset on all records from the Employees table that have
' a Null value in the ReportsTo field.
strSQL = "SELECT * FROM Employees WHERE ReportsTo IS NULL"
Set rstEmployees = dbsNorthwind.OpenRecordset(strSQL, dbOpenDynaset)
' If the recordset is empty, exit.
If rstEmployees.EOF Then Exit Sub
intI = 1
With rstEmployees
Do Until .EOF
.Edit
![ReportsTo] = 5
![Title] = "Temporary"
![Notes] = rstEmployees![Notes] & "Temp #" & intI
.Update
.MoveNext
intI = intI + 1
Loop
End With
RstEmployees.Close
dbsNorthwind.Close
Set rstEmployees = Nothing
Set dbsNorthwind = Nothing
Exit Sub
ErrorHandler:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Sub
注:
[!メモ] この例の目的は単に、 Update メソッドと MoveNext メソッドの使用方法を示すことです。 最適なパフォーマンスを得るには、SQL UPDATE クエリを使用してこの一括操作を実行することをお勧めします。
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示