根据六个条件查询一个表中的数据表结如何:
编号  型号  类型   外径  内径   厚度    品牌我的目的是:可以同时提供:
型号  类型   外径  内径   厚度    品牌给用户输入查询,但如果用户不输入,就表示不根据该条查询.
比如外径为空,其它条件输入数值,就表示从包含所有外径的数据中再根据条件查询究竟应如何写查询语句才最合理,你们是怎样做的

解决方案 »

  1.   

    aq.close;
    aq.sql.clear;
    aq.sql.add(select * from ta where 1=1);
    if edit1.text <> '' then
       aq.sql.add(' and 型号 = ''' + Edit1.text + '''');
    if edit2.text <> '' then
    ...aq.open;
      

  2.   

    aq.close;
    aq.sql.clear;
    sqlstr:='select * from ta where '
    sqlstr := sqlstr + ' 型号  like :型号 and 类型 like :类型 and 外径 like :外径
    and 内径  like :内径 and 厚度  like :厚度 and 品牌  like :品牌'Parameters.ParamByName('型号').value  := '%'+trim(条件一)+'%'; 
    Parameters.ParamByName('类型').value  := '%'+trim(条件二)+'%';
    Parameters.ParamByName('外径').value  := '%'+trim('条件三')+'%';
    Parameters.ParamByName('内径').value  := '%'+trim(条件四)+'%';
    Parameters.ParamByName('外径').value  := '%'+trim(条件五)+'%';
    Parameters.ParamByName('内径').value  := '%'+trim(条件六)+'%';
    aq.sql.add(sqlstr);
    aq.open;
      

  3.   

    adoquery3.Close;
    adoquery3.sql.clear;
    adoquery3.sql.add('select * from bearing');
    if length(combobox2.text)<>0 then
     adoquery3.sql.add('where btype=+''''+trim(combobox2.text)+''''');
    if length(combobox1.Text)<>0 then
     adoquery3.SQL.Add('and ppai=+''''+trim(combobox1.text)+''''');
    adoquery3.open;
    提示combobox2.text没有默认值
      

  4.   


    with ap do
    begin
    aq.close;
    aq.sql.clear;
    sqlstr:='select * from ta where '
    sqlstr := sqlstr + ' 型号  like :型号 and 类型 like :类型 and 外径 like :外径
    and 内径  like :内径 and 厚度  like :厚度 and 品牌  like :品牌'Parameters.ParamByName('型号').value  := '%'+trim(条件一)+'%'; 
    Parameters.ParamByName('类型').value  := '%'+trim(条件二)+'%';
    Parameters.ParamByName('外径').value  := '%'+trim('条件三')+'%';
    Parameters.ParamByName('内径').value  := '%'+trim(条件四)+'%';
    Parameters.ParamByName('厚度').value  := '%'+trim(条件五)+'%';
    Parameters.ParamByName('品牌').value  := '%'+trim(条件六)+'%';
    aq.sql.add(sqlstr);
    aq.open;
    end;
      

  5.   

    那就用 comerliang(天地良心) 的方法啊