Query1.SQL[0] = 'Select * From Table1 Where 1=1' <--- 这里可以是别的:-)
Query1.SQL[1] = ''
Query1.SQL[2] = ''
Query1.SQL[3] = ''
Query1.SQL[5] = ''
Query1.SQL[6] = '' //都是用来保存查询条件的//实现:
if CheckBox1.Checked then
  Query1.SQL[1] := 'and 条件1=True';if CheckBox2.Checked then
  Query1.SQL[2] := 'and 条件2=True';明白了没有:-)

解决方案 »

  1.   

    能否详细点,在query1中的参数应怎么设置呢
      

  2.   

    var
      str:string;
    begin
      if Edit1.text<>'' then str:='and 字段1='+Edit1.text;
      if Edit2.text<>'' then str:=str+'and 字段2='+Edit2.text;  
      if Edit3.text<>'' then str:=str+'and 字段3='+Edit3.text;
    end;
      

  3.   

    //不會很沒有看懂吧
    var
      str:string;
    begin
       ......
      //Query1 連接數據庫
      Query1.SQL.Clear;
      Query.SQL.Add('Select * From Table1 Where 1=1' '):
      if Edit1.text<>'' then str:='and 字段1='+Edit1.text;
      if Edit2.text<>'' then str:=str+'and 字段2='+Edit2.text;  
      if Edit3.text<>'' then str:=str+'and 字段3='+Edit3.text;
      if str <> '' then
      Query1.SQL.Add(str);
      Query1.Open;
      ...........
    end;
      

  4.   

    通不过啊
    以下是我的代码
    var
      str:string;
    begin
        infoQuery1.Close ;
        infoQuery1.sql.clear;    str:='select * from info';
        if edit1.Text <>'' then str:=str+'add where ID='+edit1.text;
        if edit2.text <>'' then str:=str+'add where Name='+edit2.text;    infoQuery1.SQL.Add(str);
        infoQuery1.Prepare ;
        infoQuery1.Open ;总是出错,显示'Table does not exist'等。在没有if 语句时是正确的。
      

  5.   

    呵呵,不是那样的,
    你看看,
    当条件都符合时你的语句是这样的Select * From Info
    add Where ID='xxx1'
    add Where Name='xxx2'//??!这样,有语法错误呀:-)
      

  6.   

    var
      str:string;
    begin
        infoQuery1.Close ;
        infoQuery1.sql.clear;    str:='select * from info where ID <> '''; <--这里最好有个初始条件,下面就更好做了:)
        if edit1.Text <>'' then str:=str+' and ID='+edit1.text;
        if edit2.text <>'' then str:=str+' and Name='+edit2.text;    infoQuery1.SQL.Add(str);
        infoQuery1.Prepare ;
        infoQuery1.Open ;注意:上面的语句可能仍会出现错误!因为你的Name 是字符型的话,你还应该用''包括起来!自己改吧...
      

  7.   

    修改如下 :
    var
      str:string;
    begin
        infoQuery1.Close ;
        infoQuery1.sql.clear;    str:='select * from info where 1=1 ';  //要加一句都执行的条件
        if edit1.Text <>'' then str:=str+'add where ID='+edit1.text;
        if edit2.text <>'' then str:=str+'add where Name='+edit2.text;    infoQuery1.SQL.Add(str);
        infoQuery1.Prepare ;
        infoQuery1.Open ;
      

  8.   

    错了
    应为如下 :
    var
      str:string;
    begin
        infoQuery1.Close ;
        infoQuery1.sql.clear;    str:='select * from info where 1=1 ';  //要加一句都执行的条件
        if edit1.Text <>'' then str:=str+'add ID='+edit1.text;
        if edit2.text <>'' then str:=str+'add  Name='+edit2.text;    infoQuery1.SQL.Add(str);
        infoQuery1.Prepare ;
        infoQuery1.Open ;
      

  9.   

    对啦,
    错误的原因在于应该对STR进行判断,如果它为空时,其语句不应该有AND的存在,如果不为空,则可以有AND 的存在!
    或则你直接对STR进行初始化先!
      

  10.   

    var
      str:string;
    begin
        infoQuery1.Close ;
        infoQuery1.sql.clear;    str:='select * from info where 1=1 ';  //要加一句都执行的条件
        if edit1.Text <>'' then str:=str+'and ID='+edit1.text; //是and 不是add;
        if edit2.text <>'' then str:=str+'and  Name='+edit2.text;    infoQuery1.SQL.Add(str);
        infoQuery1.Prepare ;
        infoQuery1.Open ;
      

  11.   

    var
      SQLstr,WhereStr:string;
    begin
        WhereStr := '';
        
        if 条件1<> '' then
           if WhereStr = '' then
              WhereStr := ' where 条件1 '
           else 
              WhereStr := WhereStr + ' and 条件1 '
        if 条件2<> '' then
           .....
           .....
           .....    SQLStr := 'select * from YouTableName ' + WhereStr ;
       // 执行SQLStr   OK 
    end;
      

  12.   

    我做过select的组合查询,请给我一个电子邮件!
      

  13.   

    很麻烦的!你的SQL语句里的条件必须有顺序,要个标识判断他以前的是否为空,如果是空就把这个作为头,如果不是就加AND