// tiaojian := copy(tiaojian, 1, length(tiaojian) - 3); //最重要一句
呵呵,这最重要的一句却是低效的一句,改为如下不是更好?:
System.Delete(tiaojian, Length(tiaojian) - 2);
这样不会分配临时空间。
要是你的几个字段都是字符串或 Memo 甚至时间(只要不包含整型),就可以这样:
const
FindFields: array [1..9] of string =
('m_name', 'm_ename', 'm_company', 'm_phone', 'm_email', 'm_homepage',
'm_qq', 'm_birth', 'm_caddress');
var
i: integer;
TheEdit: TEdit;
SQLStr: string;
begin
SQLStr := '';
for i := 1 to 11 do
begin
TheEdit := FindComponent('Edit' + inttostr(i)) as TEdit;
if Length(TheEdit.Text) > 0 then
begin
if Length(SQLStr) > 0 then
SQLStr := SQLStr + ' and ' + FindFields + ' like ''%' +
TheEdit.Text + '%''';
end;
end;
if Length(SQLStr) > 0 then
begin
SQLStr := 'select * from memoryTbl where' + SQLStr;
ADODataSet1.CommandText := SQLStr;
//Do find
ADODataSet1.Active := True;
//....
end
else
ShowMessage('你要找什么?');
end;