Goto 系メソッドでの検索の実行

提供: RAD Studio
移動先: 案内検索

インデックスを使用したレコードの検索 への移動


Goto 系メソッドを使って検索を実行するには:

  1. 検索に使用するインデックスを指定します。これは、データセット中のレコードをソートするのと同じインデックスです。インデックスを指定するには、IndexName プロパティまたは IndexFieldNames プロパティを使用します。
  2. データセットを開きます。
  3. SetKey メソッドを呼び出して、データセットを dsSetKey 状態にします。
  4. 検索値を Fields プロパティに指定します。FieldsTFields オブジェクトであり、フィールド コンポーネントのインデックス付きリストを保持しています。このフィールド コンポーネントには、列に対応する序数を指定してアクセスすることができます。データセット内の最初の列の番号は 0 です。
  5. GotoKey または GotoNearest で検索して、一致した最初のレコードに移動します。

たとえば、ボタンの OnClick イベントに実装された次のコードでは、GotoKey メソッドを使用して、インデックス内の最初のフィールドの値が編集ボックスのテキストと完全に一致する最初のレコードに移動します。

procedure TSearchDemo.SearchExactClick(Sender: TObject);
begin
  ClientDataSet1.SetKey;
  ClientDataSet1.Fields[0].AsString := Edit1.Text;
  if not ClientDataSet1.GotoKey then
    ShowMessage('Record not found');
end;
void __fastcall TSearchDemo::SearchExactClick(TObject *Sender)
{
  ClientDataSet1->SetKey();
  ClientDataSet1->Fields->Fields[0]->AsString = Edit1->Text;
  if (!ClientDataSet1->GotoKey())
    ShowMessage("Record not found");
}

GotoNearest も同様です。フィールド値の部分文字列に最も近いものを検索します。これは文字列フィールドにのみ使用可能です。以下に例を示します。

Table1.SetKey;
Table1.Fields[0].AsString := 'Sm';
Table1.GotoNearest;
Table1->SetKey();
Table1->Fields->Fields[0]->AsString = "Sm";
Table1->GotoNearest();

最初のインデックス付きフィールドの値の最初の 2 文字が "Sm" であるレコードが存在すると、カーソルはそのレコードの位置に移動します。存在しなければ、カーソルの位置は変化せず、GotoNearestFalse を返します。

関連項目