Recordset2.PercentPosition プロパティ (DAO)

適用先: Access 2013、Office 2013

Recordset オブジェクト内のレコード数の割合に基づいて、 Recordset オブジェクトのカレント レコードのおよその位置を示す値を設定または取得します。

構文

。PercentPosition

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

注釈

Recordset オブジェクト内のカレント レコードのおよその位置を示したり変更したりするには、 PercentPosition プロパティを確認または設定します。 ベース テーブルから直接開いたダイナセット タイプまたはスナップショット タイプの Recordset オブジェクトを使用する場合は、 PercentPosition プロパティを設定または確認する前に、最後のレコードに移動して Recordset オブジェクトに値を設定します。 Recordset オブジェクトに値がすべて設定される前に PercentPosition プロパティを使用すると、移動量は、 RecordCount プロパティの設定値に示されている、アクセス済みのレコード数に対する割合になります。 MoveLast メソッドを使用すると、最後のレコードに移動できます。

注:

PercentPosition プロパティを使用して、Recordset オブジェクト内の特定のレコードに現在のレコードを移動することはお勧めしません。 Bookmark プロパティは、このタスクに適しています。

いったん PercentPosition プロパティをある値に設定すると、その値に対応するおよその位置にあるレコードがカレント レコードになり、 PercentPosition プロパティはカレント レコードのおよその位置が反映された値に再設定されます。 たとえば、 Recordset オブジェクトに格納されているレコードが 5 件のみの場合に、その PercentPosition プロパティの値を 77 に設定すると、 PercentPosition プロパティから取得される値は 77 ではなく 80 になることがあります。

PercentPosition プロパティは、前方専用タイプの Recordset オブジェクトまたはリモート データベースに対するパススルー クエリから開かれた Recordset オブジェクトを除く、すべての種類の Recordset オブジェクトに適用されます。

フォームまたはテキスト ボックスのスクロール バーに PercentPosition プロパティを使用すると、 Recordset オブジェクト内のカレント レコードの位置を示すことができます。

この例では、 PercentPosition プロパティを使用して、 Recordset オブジェクトの先頭を基準とした、カレント レコードを参照するポインターの位置を示します。

    Sub PercentPositionX() 
     
     Dim dbsNorthwind As Database 
     Dim rstProducts As Recordset2 
     Dim strFind As String 
     Dim strMessage As String 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     ' PercentPosition only works with dynasets or snapshots. 
     Set rstProducts = dbsNorthwind.OpenRecordset( _ 
     "SELECT ProductName FROM Products " & _ 
     "ORDER BY ProductName", dbOpenSnapshot) 
     
     With rstProducts 
     ' Populate the Recordset. 
     .MoveLast 
     .MoveFirst 
     
     Do While True 
     ' Show current record information and ask user 
     ' for input. 
     strMessage = "Product: " & !ProductName & vbCr & _ 
     "The record pointer is " & _ 
     Format(.PercentPosition, "##0.0") & _ 
     "% from the " & vbCr & _ 
     "beginning of the Recordset." & vbCr & _ 
     "Please enter a character search string " & _ 
     "for a product name." 
     strFind = Trim(InputBox(strMessage)) 
     If strFind = "" Then Exit Do 
     
     ' Try to find a record matching the search string. 
     .FindFirst "ProductName >= '" & strFind & "'" 
     If .NoMatch Then .MoveLast 
     Loop 
     
     .Close 
     End With 
     
     dbsNorthwind.Close 
     
    End Sub