次の方法で共有


DAO レコードセットの制限を検出する

Recordset オブジェクトで、先頭レコードまたは終了レコードを超えて移動しようとすると、実行時エラーが発生します。 たとえば、Recordset の最後のレコードに既にあるときに MoveNext メソッドを使用しようとすると、トラップ可能なエラーが発生します。 このような理由から、Recordset オブジェクトの境界を調べることができると便利です。

BOF プロパティは、現在の位置が Recordset の先頭にあるかどうかを示しますBOFTrue の場合、現在位置は Recordset の先頭レコードよりも前です。 BOF プロパティは、開いている Recordset にレコードがない場合にも True になります。

同様に、現在の位置が Recordset の最後のレコードの後にある場合、またはレコードがない場合、EOF プロパティは True です

次のコード例は、 BOF プロパティと EOF プロパティを使用して Recordset オブジェクトの先頭と末尾を検出する方法を示しています。 このコードは、カレント データベース内の [受注] テーブルに基づいてテーブル タイプの Recordset を作成します。 Recordset の先頭から終端に向かってレコード間を移動し、終了すると今度は Recordset の終端から先頭に向かって移動します。

Dim dbsNorthwind As DAO.Database 
Dim rstOrders As DAO.Recordset 
 
   Set dbsNorthwind = CurrentDb 
   Set rstOrders = dbsNorthwind.OpenRecordset("Orders") 
 
   ' Do until ending of file. 
   Do Until rstOrders.EOF 
      ' 
      ' Manipulate the data. 
      ' 
      rstOrders.MoveNext            ' Move to the next record. 
   Loop 
 
   rstOrders.MoveLast               ' Move to the last record. 
 
   ' Do until beginning of file. 
   Do Until rstOrders.BOF 
      ' 
      ' Manipulate the data. 
      ' 
      rstOrders.MovePrevious        ' Move to the previous record. 
   Loop 

最初のループの直後に現在のレコードがないことに注意してください。 BOF プロパティと EOF プロパティの両方に次の特性があります。

  • Recordset を開いたときにレコードが含まれていない場合、BOFEOF の両方が True になります。

  • BOF または EOFTrue のとき、既存のレコードに移動するまでプロパティは True のままで、移動した時点で BOF または EOF の値は False になります。

  • BOF または EOFFalse で、Recordset 内のただ 1 つのレコードが削除されたとき、別のレコードに移動するまでプロパティは False のままであり、移動した時点で BOFEOF の両方が True になります。

  • 少なくとも 1 つのレコードを含む Recordset を作成した時点または開いた時点では、先頭のレコードがカレント レコードであり、BOFEOF はどちらも False です。

  • MovePrevious メソッドを使用するときに先頭のレコードがカレント レコードだと BOFTrue に設定されます。 BOFTrue のときに MovePrevious を使用すると、実行時エラーが発生します。 この場合、BOFTrue のままであり、カレント レコードは存在しません。

  • 同様に、Recordset の最終レコードを超えて移動すると、EOF プロパティの値が True に変化します。 EOFTrue のときに MoveNext メソッドを使用すると、実行時エラーが発生します。 この場合、EOFTrue のままであり、カレント レコードは存在しません。

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。