Delphi 7:如何在BDE数据库字段中搜索特定关键字
我是Delphi的新手,创建了一个简单的BDE数据库,包含以下字段:条目号、系统、错误、解决方案。我希望能够在“错误”字段中搜索任何关键字,并且包含该关键字的所有条目都应显示在另一个窗口中Delphi 7:如何在BDE数据库字段中搜索特定关键字,delphi,delphi-7,bde,Delphi,Delphi 7,Bde,我是Delphi的新手,创建了一个简单的BDE数据库,包含以下字段:条目号、系统、错误、解决方案。我希望能够在“错误”字段中搜索任何关键字,并且包含该关键字的所有条目都应显示在另一个窗口中 任何有关编码的帮助都将不胜感激。您应该将TDataSet的Filter属性设置为类似于Error='*keyword*'。假设关键字是在名为Edit1的TEdit控件中键入的,则可以使用Edit1Change事件触发如下筛选: procedure TForm1.Edit1Change(Sender: TObj
任何有关编码的帮助都将不胜感激。您应该将TDataSet的Filter属性设置为类似于
Error='*keyword*'
。假设关键字是在名为Edit1的TEdit控件中键入的,则可以使用Edit1Change事件触发如下筛选:
procedure TForm1.Edit1Change(Sender: TObject);
Table1.Filter := 'Error = ''' + Edit1.Text + '*''';
Table1.Filtered := Edit1.Text <> '';
end;
程序TForm1.Edit1Change(发送方:TObject);
表1.过滤器:='Error='''+Edit1.Text+'*'';
表1.筛选:=Edit1.文本“”;
结束;
结果可以在数据感知网格(如DBGrid)中显示。对于Table1和网格之间的连接,您需要一个TDataSource组件:网格链接到源,源在其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;
程序TForm1.Edit1Change(发送方:TObject);
变量
stlSep:TStringList;
sFilter:string;
i:整数;
开始
stlSep:=TStringList.Create;
stlSep.CommaText:=Edit1.Text;
对于i:=0到stlSep.Count-1 do
sFilter:=sFilter+'或Error='''+stlSep[i]+'*'';
免费;
表1.Filter:=复制(sFilter,4,MaxInt);
表1.筛选:=Edit1.文本“”;
表1.开放式;
结束;
根据您的需要,您可能需要将
或
替换为和
可能的重复项听起来更像是“过滤器”而不是“搜索”。您是否考虑过使用TDataSet的“Filter”和“Filtered”属性?或者您必须在TQuery中使用适当的SQL。无论如何,你必须提供更多的信息。你使用什么样的数据库?“关键字”是“错误”-fiels的一部分还是整个字段值是关键字?像BDE数据库这样的东西是不存在的,也许你正在通过BDE创建一个悖论数据库。我必须警告您,自Delphi6或Delphi7(大约15年前)以来,BDE就被弃用了,因此如果您正在学习Delphi,请从受支持的当前数据访问层开始,如dbExpress。