我想实现4个条件的综合模糊查询 当用任意的两个或两个以上的条件查询的时候实现and的查询 用随意的一个条件查询的时候 也能认定这个唯一的查询条件 朋友告诉我 当选择了条件之后 其他未选的默认成全部的内容 但是 不知道该怎么写这个语句 应该是用if语句吧 请各位朋友帮忙提供个delphi的程序参考一下 或者指点一下  谢谢

解决方案 »

  1.   

    一段代码供参考:
    aq1.Close;
    aq1.SQL.Clear;
    aq1.SQL.Add('select a.clid as 材料代號,b.clname as 材料名稱 ,b.cldw as 單位,a.clprice as 單價,a.pricedate as 報價日期 ');
    aq1.SQL.Add(' from cailiaoprice a  left join cailiao b on a.clid =b.clid ');
    aq1.SQL.Add(' left join caizhi c on b.czid =c.czid ');aq1.SQL.Add('  where a.clid<>''0'' ');
    aq1.SQL.Add('  and pricedate<='''+formatdatetime('yyyy-mm-dd',dt2.datetime)+'''  and  pricedate>='''+formatdatetime('yyyy-mm-dd',dt1.datetime)+''' ');
    if (Trim(edtmjid.Text)<>'')  then
    aq1.SQL.Add(' and a.clid like '''+Trim(edtmjid.Text)+'%'' ');
    ///////////////if (Trim(edtck.Text)<>'')  then
    aq1.SQL.Add(' and b.clname like ''%'+Trim(edtck.Text)+'%'' ');
    ///////////////if (Trim(edtczname.Text)<>'')  then
    aq1.SQL.Add(' and c.czname like ''%'+Trim(edtczname.Text)+'%'' ');
    ///////////////
    aq1.Open;
      

  2.   

    上面是3个条件的,可以任意选择一个,也可以同时选三个,或者可以任意选两个,
    条件都用edit输入。这样的条件可以无限扩展,100个条件都没关系。这个问题太简单了
      

  3.   

    for example
    var
      sql :String;  sql := 'select * from your_table where 1=1';
      if checkbox1.checked then
        sql := sql + ' and field1 like ''%' + your_field1_value + '''%';
      if checkbox2.checked then  
        sql := sql + ' and field2 like ''%' + your_field2_value + '''%';
      ... so on  query1.sql.text = sql;
      query1.open;
      ...
      

  4.   

    那天有个人问的组合查询的问题
    题目如下:我想在查询中实现组合查询:有员工编号edit1,姓名:edit2,部门:combobox1等,有个button1,有个dbgrid1,实现查询,edit1,edit2,combobox1,以上全选,或者,选几个,都能实现查询??
    代码该怎么写,,假如ado是:adoquery1,datasource1,我是这样给他写的,button1onclick事件;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;你看看是否符合你的要求?
    至于你的多个条件就加进去就可以了
      

  5.   

    沉默 谢谢你提供的代码 其实 我要找的跟这个题目差不多 我现在就试试看看 但是 我对with adoquery1 do不太明白 是什么意思呢
      

  6.   

    写了 with adoquery1 do
         begin
           //adoquery1.Close;   // 可简写为下面一句,其他雷同
           Close;              // 就直接这么写,
            .......
        end;
      

  7.   

    明白了 可以说是嫌分少 同时也明白了 为什么百度知道上面会有因为这个而投诉的了 谢谢你哈 我不否认 我是初学者 你的代码相对我来说有点难度 所以 我选择了更为能让我一下接受的 其实我还是不明白倒分是什么意思 是故意给熟人倒分的意思么 如果是 那么你猜错了 也猜对了 我水平低 看不懂你的代码 因为我是初学 还有 我不觉得来这里分数有那么的重要 这里我一个人都不认识 来这里 就是为了找我需要的帮助 来学习我不会的东西 还是谢谢你哈 让我多知道了一条规矩 黑名单有什么影响 除了让我不能给你发信息之外 还有什么 影响信誉值吗 这些我都不知道 就这样吧 你的代码我留下了 当作纪念 或许很快我就读懂了 还有 你的昵称我比较赞同 对于那个阿宝朋友 不知道是不是也有lovendII这样的意见 如果有 那就对不住了 没办法了 谢谢lovendII曾经的帮助