举个例子:
   我想对查询出的结果按“学生成绩”排序,还需要按“学号”排序。
程序怎么让用户随便选择排序呢?

解决方案 »

  1.   

    sql.add('select * from table order by ' + edit1.text + ',' + edit2.text);
    依次写就行了
      

  2.   

    用adodataset作查詢結果﹕adodataset.sort=学生成绩
    或  adodataset.sort=学号
      

  3.   

    可以把所有可以用来排序的字段全部装入一个COMBOBOX中,供用户选择
      

  4.   

    不要硬编码,把想用来order by的关键字做到listbox中由用户选择,定义个string型变量比如叫orderseed用来记录这个listbox的item,sql中用orderseed排序不就可以了吗。个人觉得listbox中的item也不应该是你在编程时硬编码进去的,应该由数据库中读出可用来排序的关键字,这样实用性好一点,希望可以帮上忙
      

  5.   

    我看错了, 用firetoucher(风焱) ( )大哥的吧,默认排序方式 是ASC,如果第一个排序字段中有重复值,则会按第二个字段排序
      

  6.   

    你的 意思是 分别 进行排序,
    还是 对学号、成绩同时进行 排序如果 是 那就 
    select * from biao order sno order by chengji Asec这就是 在 按照学号排序的 同时,然后对 那 个人的 全部成绩在 排序
      

  7.   

    to: ollea(一定要mf到胡萝卜)   我用的是存储过程啊,该怎么动态选择不同的排序呢?
    是不是用存储过程,就没办法象使用TQUERY控件那样动态设置SQL了?
      

  8.   

    对存储过程传递参数 sName 
    然后在存储过程中使用 select * from table order by sName
      

  9.   

    to xuege(流浪汉)
    不好意思刚才看到你给我的留言,没及时回复,望见谅
    可以传递参数,把orderseed传过去 :)。关键是orderseed不应该是你在编程时期硬在listbox 属性中写进去的,我觉得是应该从表中读出来可用来排序的关键字,我以前是在建表的时候添加一个键值,这样读表的时候,只要判断相关的键就可以知道那些可以用来排序,将它们添加到listbox或者是combox中,供用户选择。要求就是用动态的sql语句,参考书上应该有动态sql的例子。不难,你静心看一下。望顺利完成
      

  10.   

    谢谢以上各位,要特别感谢 ollea(一定要mf到胡萝卜) 的热心指点,真的非常感谢!!!
    我就是没想到用参数进行排序,
    我总想能在dbgrid里点击一列,就可以按这一列排序,
    我以为有什么设置就可以很简单的办到呢,所以竟这么想了。
    再次谢谢大家!!