这是我几个月前的一段代码,在Edit的OnKeyDown时间中按照用户输入的一个或者多个关键词进行模糊查询:全局变量:LastQueryStr:String;PubStrs:TStringList;procedure TFMList.QueryTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); Var SQLStr:String; I:Integer; begin if KEY=VK_Return then begin if QueryText.Text='' then Exit; if (Trim(QueryText.Text)<>LastQueryStr) then begin LastQueryStr:=Trim(QueryText.Text); PubStrs.CommaText:=LastQueryStr; SQLStr:='Select * from DevView where '+QueryFieldName+' Like '+ QuotedStr('%'+PubStrs[0]+'%'); if PubStrs.Count>1 then begin for I:=1 to PubStrs.Count-1 do SQLStr:=SQLStr+' and '+QueryFieldName+' Like '+ QuotedStr('%'+PubStrs[I]+'%'); end; end else begin QueryText.Text:=''; LastQueryStr:=''; SQLStr:='Select * from DevView'; end; SQLStr:=SQlStr+' Order by DevID Desc'; District.ItemIndex:=0; District.OnChange(nil); DM.QDevList.Close; DM.QDevList.SQL.Clear; DM.QDevList.SQL.Add(SQLStr); DM.QDevList.Open; end; end;
Shift: TShiftState);
Var SQLStr:String;
I:Integer;
begin
if KEY=VK_Return then
begin
if QueryText.Text='' then Exit;
if (Trim(QueryText.Text)<>LastQueryStr) then
begin
LastQueryStr:=Trim(QueryText.Text);
PubStrs.CommaText:=LastQueryStr; SQLStr:='Select * from DevView where '+QueryFieldName+' Like '+
QuotedStr('%'+PubStrs[0]+'%');
if PubStrs.Count>1 then
begin
for I:=1 to PubStrs.Count-1 do
SQLStr:=SQLStr+' and '+QueryFieldName+' Like '+
QuotedStr('%'+PubStrs[I]+'%');
end; end else begin
QueryText.Text:='';
LastQueryStr:='';
SQLStr:='Select * from DevView';
end; SQLStr:=SQlStr+' Order by DevID Desc'; District.ItemIndex:=0;
District.OnChange(nil); DM.QDevList.Close;
DM.QDevList.SQL.Clear;
DM.QDevList.SQL.Add(SQLStr);
DM.QDevList.Open;
end;
end;