レコードセットの境界
Recordset は、データセットの先頭と末尾をそれぞれ示す BOF プロパティと EOF プロパティをサポートしています。 BOF と EOF は、Recordset の先頭と末尾に配置される "ファントム" レコードと考えることができます。 BOF と EOF を考慮すると、サンプルの Recordset は次のようになります。
ProductID | ProductName | UnitPrice |
---|---|---|
BOF | ||
7 | アンクルボブのオーガニックドライ梨 | 30.0000 |
14 | 豆腐 | 23.2500 |
28 | ルスル ザワークラウト | 45.6000 |
51 | マンジマップ ドライリンゴ | 53.0000 |
74 | ロングライフ豆腐 | 10.0000 |
EOF |
カーソルが最後のレコードを超えると、EOF は True に設定されます。それ以外の場合、値は False です。 同様に、カーソルが最初のレコードの前に移動すると、BOF は True に設定されます。それ以外の場合、値は False です。 次の JScript コード フラグメントが示すように、これらのプロパティはデータセット内のレコードを列挙するために通常使用されます。
while (objRecordset.EOF != true)
{
// Work on the current record.
...
// Advance the cursor forward to the next record.
objRecordset.MoveNext();
}
or
while (objRecordset.BOF != true)
{
// Work on the current record.
...
// Move the cursor to the previous record.
objRecordset.MovePrevious();
}
BOF と EOF の両方が True の場合、Recordset オブジェクトは空です。 新しく開いた空でない Recordset オブジェクトの場合、どちらのプロパティも False になります。 次の JScript コード フラグメントが示すように、BOF プロパティと EOF プロパティの両方を使用すると、Recordset オブジェクトが空かどうかを判断できます。
if (objRecordset.EOF == true && objRecordset.BOF == true)
{
WScript.Echo("we got an empty dataset.");
}
else
{
WScript.Echo("we got a full dataset.");
}
このスキームはすべての種類のカーソルで機能し、基になるプロバイダーには依存しません。 RecordCount プロパティ値がゼロ (0) であるかどうかを確認することで Recordset オブジェクトが空かどうかを判断する場合は、結果でレコード数を返すことができる適切なカーソルとプロバイダーを使用するよう注意する必要があります。
Recordset オブジェクト内の最後の残りのレコードを削除した場合、カーソルは不確定状態のままになります。 プロバイダーによっては、現在のレコードの位置を変更するまで、BOF プロパティと EOF プロパティは False のままになることがあります。 詳細については、「Delete メソッドを使用したレコードの削除」を参照してください。