フィルタが設定されたデータセット内のレコード間の移動
フィルタが設定されたデータセット内のレコード間を移動するために、4 つのデータセット メソッドを使用することができます。これらのメソッドとその用途を以下の表に示します。
フィルタが設定されたデータセット内の移動メソッド:
メソッド | 用途 |
---|---|
FindFirst |
現在のフィルタ条件に一致する最初のレコードに移動します。一致する最初のレコードの検索は常に、フィルタ適用前のデータセットの最初のレコードから始まります。 |
FindLast |
現在のフィルタ条件に一致する最後のレコードに移動します。 |
FindNext |
フィルタ適用後のデータセット内で現在のレコードから次のレコードに移動します。 |
FindPrior |
フィルタ適用後のデータセット内で現在のレコードから 1 つ前のレコードに移動します。 |
たとえば次の文は、データセット内でフィルタに一致する最初のレコードを検索します。
DataSet1.FindFirst;
DataSet1->FindFirst();
アプリケーションで Filter プロパティを設定しているか Data.DB.TDataSet.OnFilterRecord イベント ハンドラを作成していると、フィルタ処理が現在有効になっているかどうかに関係なく、これらのメソッドを実行すると指定されたレコードにカーソルが移動します。フィルタ処理が有効になっていないときにこれらのメソッドを呼び出すと、以下の処理が行われます。
- 一時的にフィルタ処理が有効になる
- 一致するレコードが見つかればそのレコードにカーソルが移動する
- フィルタ処理が無効になる
メモ: フィルタ処理が無効になっていて、Filter プロパティを設定したり OnFilterRecord イベント ハンドラを作成していない場合には、これらのメソッドの動作は First、Last、Next、Prior と同じになります。
移動用のフィルタ メソッドはどれも、一致するレコードが見つかるとそのレコードにカーソルを移動し、そのレコードを現在のレコードにして、True を返します。一致するレコードが見つからなければ、カーソル位置は変更せず、False を返します。これらの呼び出しの後に Found プロパティの状態を確認して、Found が True のときだけアクションを起こすことができます。たとえば、既にカーソルがデータセット内の一致する最後のレコードにあるときに FindNext メソッドを呼び出すと、False が返され、現在のレコードは変化しません。