比如说我有三个edit...edit1.txt:='黑' edit2.txt:='卡车' edit.txt:='日期'如果edit1.txt 有值 就按条件是黑的搜索数据记录... edit2(空值) edit3(空值)如果edit1.txt 有值,edit2.txt 也有值...就按所有的卡车是黑色的条件去查询 edit3(空值)不管三个中哪一个或二个有值都按有值的条件去搜索满足条件的记录....我只求这方法(SQL语句)......
调试欢乐多
sqlstr: string;
begin
sqlstr := 'select * from table where 2 > 1';
if trim(edit1.text) <> '' then
sqlstr := sqlstr + 'and field1 =' + quotestr(edit1.text);
if trim(edit2.text) <> '' then
sqlstr := sqlstr + 'and field2 =' + quotestr(edit2.text);
if trim(edit3.text) <> '' then
sqlstr := sqlstr + 'and field3 =' + quotestr(edit3.text);
...
end;
trim(edit1.text)+'%'' and 车型 like ''%'+ trim(edit2.text)+'%'' and 日期 like ''%'+
trim(edit3.text)+'%''';
sqlstr: string;
begin
sqlstr := 'select * from table where 2 > 1';
if trim(edit1.text) <> '' then
sqlstr := sqlstr + 'and field1 =' + quotestr(edit1.text);
if trim(edit2.text) <> '' then
sqlstr := sqlstr + 'and field2 =' + quotestr(edit2.text);
if trim(edit3.text) <> '' then
sqlstr := sqlstr + 'and field3 =' + quotestr(edit3.text);
...
end;一楼是正确的。一般都这么处理的。
sqlstr: string;
begin
sqlstr := 'select * from list1 where ';
if trim(edit1.text) <> '' then
sqlstr := sqlstr + '名称 =' + quotedstr(edit2.text);
if trim(edit2.text) <> '' then
sqlstr := sqlstr + '货号 =' + quotedstr(edit3.text);
if trim(edit3.text) <> '' then
sqlstr := sqlstr + '数量 =' + quotedstr(edit4.text);
showmessage(sqlstr);
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlstr);
ADOQuery1.Open;
end;不用加2>1 会也错... quotedstr() 正确