我对 Delphi 非常陌生,并创建了一个简单的 BDE 数据库,其中包含以下字段:条目号、系统、错误、解决方案。我希望能够在“错误”字段中搜索任何关键字,并且包含该关键字的所有条目都应显示在另一个窗口中。
任何有关编码的帮助将不胜感激。
您应该将 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;
根据您的需要,您可能必须将 替换or
为and
.