一个表有学历,姓名等字段,但都是以字母命名的字段名如学历为xueli,姓名为xingming等,现在想利用一 combobox,在其下拉框中有汉字——学历,姓名等。
如果想combobox选取“学历”时就按学历排序,选取姓名时就按“姓名”排序,怎么实现这个方法呢?希望高手能提供个简便而有快速的代码!

解决方案 »

  1.   

    很多第三方控件都支持排序的比如elib这类的
      

  2.   

    设ComboBox1中有两项:学历
              姓名if ComboBox1.ItemIndex=0 then
       AdoQuery1.Sort:='学历 DESC'  //按学历来排序,数据表中的字段假设为“学历”
    else
       AdoQuery1.Sort:='姓名 DESC'  //按学历来排序,数据表中的字段假设为“姓名”
      

  3.   

    if query1.active then
      query1.close;
      query1.sql.clear;
      tempstr:='select * from 表名 'if Trim(ComboBox1.Text)='学历'   then     tempstr:=tempstr+' order by xueli 'if Trim(ComboBox1.Text)='姓名'then     tempstr:=tempstr+' order by xingming '
    query1.sql.add(tempstr)
    query1.open;
    这样就可以了啊!
      

  4.   

    简单的方法:
    1.用两个COMBOX,一个存汉字,一个存相对应的字段,显示汉字的那个,用户下拉时两个一起变动.
    2.使用将汉字与字段写成一个Class(这个CLASS只有这二个属性),增加至TComobox.item.addobject(Class)
      

  5.   

    if Trim(ComboBox1.Text)='学历' then
    adoquery1.indexfieldnames='xueli'
    else
    if Trim(ComboBox1.Text)='姓名' then
    adoquery1.indexfieldnames='xingming' ;
      

  6.   

    var
        queryStr:String;
    begin
    if Trim(ComboBox1.Text)='学历' then
        queryStr:='xueli'
    else if Trim(ComboBox1.Text)='姓名' then
        queryStr:='xingming' ;
    aqry.SQL.Text:='select * from yourTable order by '''+queryStr+'''';
    aqry.open;
    end;
      

  7.   

    这样做:
    1、在窗体show的时候按照 :显示列名+ "                       |" + 字段名的格式添加到combox的项目中。注意空格多是为了将后面的英文字段名隐藏起来。
    2、选择combox的项目时,用pos函数在combox的text中找"|"(也可以用别的字符,只要容易标记就行了),找到后,拷贝特殊字符后面的字符串。
    3、table.sort = 拷贝出来的字符串这种发自很好的,俺一直这样用
      

  8.   

    添加 ComboBox1的OnChange事件:
    procedure TForm1.ComboBox1Change(Sender: TObject);begin
      query1.sql.clear;
      query1.sql.add('select * from 表名 ');
      if Trim(ComboBox1.Text)='学历'  then    
        query1.sql.add('order by xueli ');
      if Trim(ComboBox1.Text)='姓名'then  
        query1.sql.add('order by xingming ');
       query1.close;
       query1.open;end;
      

  9.   

    无论用哪一种方法来排序,要实现动态ComboBox下拉选择的话就得添加OnChange 事件。
      

  10.   

    是啊,必须通过combobox onchange来响应选择,在用sql语句排序.
      

  11.   

    以上的方法都不好!而且每次change都要访问一次数据库!很傻的做法!最好是将数据存放在数组里,然后对数组进行操作,确定后再提交数据库!