我想在查询中实现组合查询:有员工编号edit1,姓名:edit2,部门:combobox1等,有个button1,有个dbgrid1,实现查询,edit1,edit2,combobox1,以上全选,或者,选几个,都能实现查询??
代码该怎么写,,假如ado是:adoquery1,datasource1,
我是这样写的,buttononclick事件;
var str:string;
begin
str:='select * from adoquery1 where ';
if edit1.text<>'' then
begin
  str:=str+' ygbh=edit1.text ';
end;
 if edit2.text <>'' then
begin
  str :=str+' xm =edit2.text';
end;
 if combobox1.text <> '' then
begin
  str :=str+' bm= combobox1.text ';
end;
with adoquery1 do
close;
sql.clear;
sql.add(str);
open;
end;我知道以上这样写不对,,会错,,我只想,大虾们,,教小第,以上的功能该怎么实现!!谢谢!!

解决方案 »

  1.   

    var str:string;
    begin
    str:='select * from adoquery1 where  ';
    if edit1.text<>'' then
    begin
      str:=str+'  ygbh='+Quotedstr(edit1.text)+'  AND  ';
    end;
     if edit2.text <>'' then
    begin
      str :=str+'  xm='+Quotedstr(edit2.text)+'  AND  ';
    end;
     if combobox1.text <> '' then
    begin
      str :=str+'  bm='+Quotedstr(combobox1.text)+'  AND  ';
    end;
    str:=str+' 1=1'  // 这里是防止你没有选择任意一个
    with adoquery1 do
    close;
    sql.clear;
    sql.add(str);
    open;
    end;
      

  2.   

    str:=str+' 1=1';  // 不好意思,少打了个分号
      

  3.   

    str:=str+' 1=1';  请问: 1=1 是什么意思啊,能具体点吗,,小第是菜鸟,知道的不是很多,谢谢!
      

  4.   

    where 1=1 and 条件一 and 条件二……
    这样就不会错了。
    像你原来写的那样,第一个条件就是必选的。如果加个1=1,每个条件都是可选的。
      

  5.   

    Corn1(玉米) ( ) 就是他说的这个意思
    如果你不要 1=1 那你前面就必须有一个要选,否则就有错
      

  6.   

    Quotedstr()  这个是什么意思啊,谢谢了,
      

  7.   

    代表一对单引号 还可以用 char(39)+edit1.Text+char(39)来代替