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