if CheckBox1.Checked then
begin
adoquery1.Close; 
  adoquery1.SQL.Clear; 
  adoquery1.SQL.Add('select * from spsellsum where 客户 like ''%'+edit1.text+'%'''); 
end
else begin
adoquery1.sql.close; 
adoquery1.SQL.Add('select * from spsellsum where 销售日期>=:date1 and 销售日期 <=:date2 '); 
    adoquery1.Parameters.ParamByName('date1').Value:=datetostr(datetimepicker1.Date); 
    adoquery1.Parameters.ParamByName('date2').Value:=datetostr(datetimepicker2.Date); end;
adoquery1.open;不知道理解多没?

解决方案 »

  1.   


    if not CheckBox1.Checked then
    begin
    adoquery1.Close; 
      adoquery1.SQL.Clear; 
      adoquery1.SQL.Add('select * from spsellsum where 客户 like ''%'+edit1.text+'%'''); 
    end
    else begin
    adoquery1.sql.close; 
    adoquery1.SQL.Add('select * from spsellsum where 销售日期>=:date1 and 销售日期 <=:date2 '); 
        adoquery1.Parameters.ParamByName('date1').Value:=datetostr(datetimepicker1.Date); 
        adoquery1.Parameters.ParamByName('date2').Value:=datetostr(datetimepicker2.Date); end;
    adoquery1.open;
    搞反了
      

  2.   


    if not CheckBox1.Checked then
    begin
    adoquery1.Close; 
      adoquery1.SQL.Clear; 
      adoquery1.SQL.Add('select * from spsellsum where 客户 like ''%'+edit1.text+'%'''); 
    end
    else begin
    adoquery1.sql.close; 
    adoquery1.SQL.Add('select * from spsellsum where 客户 like ''%'+edit1.text+'%'' and 销售日期>=:date1 and 销售日期 <=:date2 '); 
        adoquery1.Parameters.ParamByName('date1').Value:=datetostr(datetimepicker1.Date); 
        adoquery1.Parameters.ParamByName('date2').Value:=datetostr(datetimepicker2.Date); end;
    adoquery1.open;
      

  3.   

    adoquery1.sql.close; 
    adoquery1.SQL.Add('select * from spsellsum where 销售日期>=:date1 and 销售日期 <=:date2 '); 
        adoquery1.Parameters.ParamByName('date1').Value:=datetostr(datetimepicker1.Date); 
        adoquery1.Parameters.ParamByName('date2').Value:=datetostr(datetimepicker2.Date); end;这个是统计全部这个时间段的,但是我的要求是,CheckBox1选中的时候,要加入前面的combobox的条件来筛选
      

  4.   


    这个应该不难吧,sql 我不怎么在行,像上面的再加1个条件试试。
      

  5.   

    那个combobox的条件现在只有三个,现在只是判断 一个条件,那要判断三个或者三个以上,是不是要对每个条件作一个独立的判断?
      

  6.   

    我作SQL查询也是一知半解,头痛,平时不努力。。嘿嘿。。
      

  7.   

    我觉得你还是把这个Combobox展开,做成一个 lable配对一个edit的形式,如果哪个edit里的内容为空,则不加入到查询条件。
      

  8.   

    COMBOBOX1这个展开,我以前就是这样做过,但是这样变成独立的判断语句,我为了版面的整洁,才会用组合选择查询
      

  9.   

    if (combobox1.Text='客户') then
     begin
       if not CheckBox1.Checked then
         begin
          adoquery1.Close;
          adoquery1.SQL.Clear;
          adoquery1.SQL.Add('select * from spsellsum where 客户 like ''%'+edit1.text+'%''');
         adoquery1.Open;
         end
         else begin
         adoquery1.sql.Clear;
         adoquery1.SQL.Add('select * from spsellsum where 客户 like ''%'+edit1.text+'%'' and 销售日期>=:date1 and 销售日期 <=:date2 ');
         adoquery1.Parameters.ParamByName('date1').Value:=datetostr(datetimepicker1.Date);
         adoquery1.Parameters.ParamByName('date2').Value:=datetostr(datetimepicker2.Date);
         adoquery1.open;
       end;end;
    kfcoffe   他上面写的有一个错误,这个是我根据他写的改好了,但是如果这样,如果COMBOBOX1有多个条件,就要写重复多个判断,那变有点画长龙呢,嘿嘿如果没有更好的代码,明天就结贴了。
      

  10.   


      if not CheckBox1.Checked then
      begin
        adoquery1.Close;
        adoquery1.SQL.Clear;
        adoquery1.SQL.Add('select * from spsellsum where 客户 like ''%'+edit1.text+'%''');
      end
      else begin
        adoquery1.sql.close;
        adoquery1.SQL.Clear;
        adoquery1.SQL.Add('select * from spsellsum where '+ComboBox1.Text+ ' like ''%'+edit1.text+'%'' and 销售日期>=:date1 and 销售日期 <=:date2 ');
        adoquery1.Parameters.ParamByName('date1').Value:=datetostr(datetimepicker1.Date);
        adoquery1.Parameters.ParamByName('date2').Value:=datetostr(datetimepicker2.Date);
      end;
      adoquery1.open;
      

  11.   

    如果check了用两个and把date内容加进去查询
    如果没就不加这两个and
      

  12.   

    adoquery1.SQL.Add('select * from spsellsum where 客户 like ''%'+edit1.text+'%'''); 
    if checked then 
    begin 
    adoquery1.SQL.Add(' and 销售日期>=:date1 and 销售日期 <=:date2 ') 
    adoquery1.Parameters.ParamByName('date1').Value:=datetostr(datetimepicker1.Date);
    adoquery1.Parameters.ParamByName('date2').Value:=datetostr(datetimepicker2.Date);
    end;
      

  13.   

    还发现个问题
    如果你combo中text和数据库中字段名相同没有必要判断每个combo选项情况
    就算不同也可以用个array代替
    adoquery1.SQL.Add('select * from spsellsum where'+combobox1.Text+' like ''%'+edit1.text+'%''');或者adoquery1.SQL.Add('select * from spsellsum where'+champName[ComboBox1.ItemIndex]+' like ''%'+edit1.text+'%''');
      

  14.   

    多个条件判断的话,可以使用循环,根据ComboBox的Items的Index,Items可以写在控件里,也可以通过代码动态添加,这个Index对应怎样的Items你清楚了,循环Index从小到大