在form里有六个combobox.
所在省 combobox1(默认值是全部,下拉框中有河北省,湖南省....)
所在市 combobox2(默认值是全部,根据combobox1的选项有对应的各个省的市名)
本专科 combobox3(默认值是全部,后面有选项,专科,本科)                   查询如何写sql语句?
急....

解决方案 »

  1.   

    combobox1.OnChange里写
    FillCity;procedure FillCity
    begin
     // strsql := 'select CityName from Address where province = '''+Combobox1.Text+''';
     // execute(strsql);
     // 将结果级填充Combobox2 
    end;
      

  2.   

    这种每次都会查询数据库,最好是用过滤
    procedure TForm1.FillCity
    begin
      with Query1 do
      begin
        Filtered := False;
        Filter := 'province='+Combobox1.Text;
        Filtered := True;
      end;
      Fill(Combobox2,Query1);
    end;
      

  3.   

    form.Onshow()
    var i:integer;
    begin
      Combobox1.clear();
      ComboBox1.item[0].addString('所有');
      ADOT.tableName:='province';
      ADOT.active:=true;
      for i:=1 to adot.recordCount do
        Combobox1.items[i].addstring(adot.fieldbyname('provinceName').asstring);
    end;其他类似 
      

  4.   

    呵呵,把SQL写成动态的,只要把where以后的条件传给SQL就可以了。这样不用判断,为空在SQL里仅仅是多了个空格而已,不影响查询。
      

  5.   

    我大概说明以下吧:如果你有7个combox,那么得写8个判断,1-7判断combox1-7是否为空,8判断全部是否为空,如果全为空,那么连where 也不写了。最后拼接字符串。
      

  6.   

    首先sql:
    select * from table
    where 1=1然后
    if combobox.text<>'全部' then sql.add('and 省='''+combobox.text+'''');