一个表有学历,姓名等字段,但都是以字母命名的字段名如学历为xueli,姓名为xingming等,现在想利用一 combobox,在其下拉框中有汉字——学历,姓名等。
如果想combobox选取“学历”时就按学历排序,选取姓名时就按“姓名”排序,怎么实现这个方法呢?希望高手能提供个简便而有快速的代码!
另有两贴:http://expert.csdn.net/Expert/topic/2639/2639860.xml?temp=.3533289 都是这个问题,一直没有搞明白,不知道这个问题谁能点破重要而有关键的地方。实现就送分。

解决方案 »

  1.   

    adodataset. Sort:=combobox.Text+''''+combobox.text+'''';在字段名与combobox内容相对应时的一种方法.
      

  2.   

    adodataset. Sort:=combobox.Text+'=''+combobox.text+'''';
      

  3.   

    var SortStr:String;
    begin
      SortStr := '';
      if Trim(ComboBox1.Text)='学历' then
        SortStr:=' Order by xueli '
      else if Trim(ComboBox1.Text)='姓名'then
        SortStr:=' Order by xingming ';
      with ADOquery1 do
      begin
        Close;
        SQL.clear;
        SQL.Add('select * from 表名 '+SortStr);
        OPen;
      end;
    end;
      

  4.   

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

  5.   


    添加 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;
      

  6.   

    关键是combobox的onchangge事件中进行操作。
      

  7.   

    在combobox的onchange事件里写sql语句,按照不同选项order by排序条件