我是Delphi的新手并创建了一个简单的BDE数据库,其中包含以下字段:条目编号,系统,错误,解决方案。我希望能够在“错误”字段中搜索任何关键字,并且包含该关键字的所有条目都应显示在另一个窗口中。
任何有关编码的帮助都将受到赞赏。
答案 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
。