表示: Delphi
C++
表示設定
Goto メソッドによる検索の実行
提供:RAD Studio
データセットについて:インデックス への移動
Goto メソッドを使って検索を実行する手順は次のとおりです。
- 検索に使用するインデックスを指定します。これはデータセット中のレコードをソートするのと同じインデックスです。インデックスを指定するには,IndexName か IndexFieldNames プロパティを使用します。
- データセットを開きます。
- SetKey を呼び出して,データセットを dsSetKey 状態にします。
- 検索値を Fields プロパティに指定します。Fields は TFields オブジェクトで,項目コンポーネントがインデックス付けされているリストを格納しています。その項目コンポーネントには,対応する列の順番を指定してアクセスできます。データセットの最初の列番号は 0 です。
- 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 も同様です。GotoNearest は部分項目値に最も近いレコードを検索します。これは文字列項目にのみ使用できます。次に例を示します。
Table1.SetKey; Table1.Fields[0].AsString := 'Sm'; Table1.GotoNearest;
Table1->SetKey(); Table1->Fields->Fields[0]->AsString = "Sm"; Table1->GotoNearest();
最初のインデックス項目の 2 文字が「Sm」であるレコードが存在する場合,カーソルはそのレコードに移動します。そのようなレコードが見つからない場合,カーソルの位置は変わらず,GotoNearest は false を返します。