0

我对 Delphi 非常陌生,并创建了一个简单的 BDE 数据库,其中包含以下字段:条目号、系统、错误、解决方案。我希望能够在“错误”字段中搜索任何关键字,并且包含该关键字的所有条目都应显示在另一个窗口中。

任何有关编码的帮助将不胜感激。

4

1 回答 1

2

您应该将 TDataSet 的 Filter 属性设置为类似Error = '*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;

根据您的需要,您可能必须将 替换orand.

于 2012-11-24T18:49:17.053 回答