比如说你有多个TEDIT来填入多个条件,通用做法如下:
首先把SQL语句的WHERE部分提取出来,用字串变量strWhere来处理
if not (edtPName.Text='') then
begin
if strWhere='' then
strWhere:=' where P.PName Like ''%'+edtPName.Text+'%'''
else
strWhere:=strWhere+' and P.PName Like ''%'+edtPName.Text+'%'''
end;
把各字段对应的TEDIT和字段名称代入这一段代码就可以了
然后在SQL语句中加入,
可以给分了:)
我也是这样做的只是在最前面一句中做了一个所有条件为空的判断,在后面不为空的条件
中最后一句加入一个WHere语句,再把SQL查询字符串加入出现以下错误:
if combobox1.text<>'' then
begin
sqlstring:='工作令号='+''''+combobox1.text+'''';
end;
if combobox2.text<>'' then
begin
if sqlstring<>'' then
begin
sqlstring:=sqlstring+'and 产品型号='''+combobox2.text+'''';
end
else
begin
sqlstring:='产品型号='''+combobox2.text+'''';
end;
end;
.......
adoquery2.sql.add('select * from shengchan where ');
adoquery2.sql.add(sqlstring);
错误信息:[microsoft][odbc]sql server driver][sql server] line2:incorrect syntax
near'=''.process stopped.
用combobox
case combobox1.text of
'':str:='';
end;
query.close;
query.sql.clear;
query.sql.add('select * from xx where XX=:XX');
query.Parameters.ParamByName('xx').value:=str;
query.open