0

私は Delphi を初めて使用し、エントリ番号、システム、エラー、ソリューションのフィールドを持つ単純な BDE データベースを作成しました。「エラー」フィールドで任意のキーワードを検索できるようにしたいのですが、そのキーワードを含むすべてのエントリを別のウィンドウに表示する必要があります。

コーディングの助けをいただければ幸いです。

4

1 に答える 1

2

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

于 2012-11-24T18:49:17.053 に答える