私は Delphi を初めて使用し、エントリ番号、システム、エラー、ソリューションのフィールドを持つ単純な BDE データベースを作成しました。「エラー」フィールドで任意のキーワードを検索できるようにしたいのですが、そのキーワードを含むすべてのエントリを別のウィンドウに表示する必要があります。
コーディングの助けをいただければ幸いです。
TDataSet の Filter プロパティを のような値に設定する必要がありますError = '*keyword*'
。Keyword が Edit1 という TEdit コントロールに入力されていると仮定すると、次のように Edit1Change イベントを使用してフィルタリングをトリガーします。
procedure TForm1.Edit1Change(Sender: TObject);
Table1.Filter := 'Error = ''' + Edit1.Text + '*''';
Table1.Filtered := Edit1.Text <> '';
end;
結果は、DBGrid などのデータ対応グリッドに表示できます。Table1 とグリッドを接続するには、TDataSource コンポーネントが必要です。Grid は Source にリンクされ、Source はその DataSet プロパティに Table1 を保持します。
この例を複数のキーワードに拡張する簡単な方法は、コンマ区切りを使用することです。
procedure TForm1.Edit1Change(Sender: TObject);
var
stlSep : TStringList;
sFilter : string;
i : Integer;
begin
stlSep := TStringList.Create;
stlSep.CommaText := Edit1.Text;
for i := 0 to stlSep.Count - 1 do
sFilter := sFilter + ' or Error=''' + stlSep[i] + '*''';
stlSep.Free;
Table1.Filter := Copy(sFilter, 4, MaxInt);
Table1.Filtered := Edit1.Text <> '';
Table1.Open;
end;
必要に応じて、 を に置き換える必要がある場合がありor
ますand
。