Recordset2.Move メソッド (DAO)

適用先: Access 2013、Office 2013

現在のレコードの位置を [Recordset] オブジェクトに移動します。

構文

。Move(Rows, StartBookmark)

Recordset2 オブジェクトを表す変数。

パラメーター

名前

必須かどうか

データ型

説明

Rows

必須

長整数型 (Long)

位置を移動する行数。 rows が 0 より大きい場合は、前方 (ファイルの末尾) に向かって位置が移動します。 rows が 0 より小さい場合は、後方 (ファイルの先頭) に向かって位置が移動します。

StartBookmark

省略可能

バリアント型 (Variant)

ブックマークを示す値。 startbookmark を指定した場合、このブックマークが移動の開始位置となります。 それ以外の場合は、カレント レコードが移動の開始位置となります。

注釈

Move を使用して、カレント レコードを参照するポインターを最初のレコードよりも前に設定すると、カレント レコードを参照するポインターはファイルの先頭に移動します。 Recordset にレコードが含まれておらず、 BOF プロパティが True の場合は、このメソッドを使用して後方に移動しようとするとエラーが発生します。

Move を使用して、カレント レコードを参照するポインターを最後のレコードよりも後ろに設定すると、カレント レコードを参照するポインターはファイルの末尾に移動します。 Recordset にレコードが含まれておらず、 EOF プロパティが True の場合は、このメソッドを使用して前方に移動しようとするとエラーが発生します。

BOF プロパティまたは EOF プロパティが True の場合に、有効なブックマークを指定せずに Move メソッドを使用しようとすると、実行時エラーが発生します。

注:

  • 前方スクロール タイプの Recordset オブジェクトで Move を使用するときは、引数 rows に正の整数を指定する必要があり、ブックマークは指定できません。 つまり、移動できる方向は前方のみです。
  • Recordset の最初のレコード、最後のレコード、次のレコード、または前のレコードをカレント レコードにするには、 MoveFirstMoveLastMoveNext、または MovePrevious の各メソッドを使用します。
  • rows に 0 を指定して Move を使用すると、カレント レコードの基になるデータを簡単に取得できます。 この方法は、カレント レコードにベース テーブルの最新のデータが格納されていることを確認するときに便利です。 またこの方法を使用すると、 Edit または AddNew に対する保留中の呼び出しが取り消されます。

この例では、Move メソッドを使用して、ユーザーの入力に基づいてレコード ポインターを配置します。

    Sub MoveX() 
     
       Dim dbsNorthwind As Database 
       Dim rstSuppliers As Recordset2 
       Dim varBookmark As Variant 
       Dim strCommand As String 
       Dim lngMove As Long 
     
       Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
       Set rstSuppliers = _ 
          dbsNorthwind.OpenRecordset("SELECT CompanyName, " & _ 
          "City, Country FROM Suppliers ORDER BY CompanyName", _ 
          dbOpenDynaset) 
     
       With rstSuppliers 
          ' Populate recordset. 
          .MoveLast 
          .MoveFirst 
     
          Do While True 
             ' Display information about current record and ask  
             ' how many records to move. 
             strCommand = InputBox( _ 
                "Record " & (.AbsolutePosition + 1) & " of " & _ 
                .RecordCount & vbCr & "Company: " & _ 
                !CompanyName & vbCr & "Location: " & !City & _ 
                ", " & !Country & vbCr & vbCr & _ 
                "Enter number of records to Move " & _ 
                "(positive or negative).") 
     
             If strCommand = "" Then Exit Do 
     
             ' Store bookmark in case the Move doesn't work. 
             varBookmark = .Bookmark 
     
             ' Move method requires parameter of data type Long. 
             lngMove = CLng(strCommand) 
             .Move lngMove 
     
             ' Trap for BOF or EOF. 
             If .BOF Then 
                MsgBox "Too far backward! " & _ 
                   "Returning to current record." 
                .Bookmark = varBookmark 
             End If 
             If .EOF Then 
                MsgBox "Too far forward! " & _ 
                   "Returning to current record." 
                .Bookmark = varBookmark 
             End If 
          Loop 
          .Close 
       End With 
     
       dbsNorthwind.Close 
     
    End Sub