Delphi 7:如何在BDE数据库字段中搜索某些关键字

时间:2012-11-22 13:38:35

标签: delphi delphi-7 bde

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

任何有关编码的帮助都将受到赞赏。

1 个答案:

答案 0 :(得分: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将Table1保存在其DataSet属性中。

将示例扩展为多个关键字的一种简单方法是使用逗号分隔:

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