怎么实现单击DBGRID标题就按所单击标题排序,再单击倒排序,且在已查出结果的基础上(50分)

  • 主题发起人 主题发起人 vanhalen
  • 开始时间 开始时间
使用ehlib或InfoPower2000
http://www.net-wing.net/kangwei
 
你把你的SQL语句分成用几个ADD 方法来添加,也就是写成几个STRING
再打开,然后在DBGRID 的ONTITLECLICK事件里面写把你要排序的列,添加用
ORDER BY (排序的列)
例如:
with query1 do
begin
SQL.ADD('SELECT * FROM GRADE');
sqL.ADD('WHERE GRAD.TYPE=4');
end;
...
再在ONTITLECLICK事件里面添加

IF COLUMNS[INDEX]。TITLE=‘类型’then
with query1 do
begin
sql.copy()//这里我没有写具体的用法你去参考COPY 的用法就行
//要注意各个条件的位置不能出现问题
close;
sql.add('order by type');
open;
end;
还有问题给我发个EMAIL
我给你做个完整的例子,OK!

 
hpretty:
题目就是不想重新读取啊。你用Query改的话,当然是可以的。

我想如果不重新读取的话,用StringGrid自己添加数据?
 
select * from ___order by __
如果这样的话,还是从新查一遍,如何在已查出的结果中排序,
这样节省资源
 
在www.DevExpress.com.cn下载一个Dbgrid一切都解决了
 
robertcool:
www.DevExpress.com.cn打不开
 
我的方法是建立临时表
然后直接读临时表就可以了
这样可以简单一点,不过用控件方便:)而且还可以不用修改什么东西:)
 
建临时表,能具体吗?
 
http://www.ocloud.com/download/dlcount.php?id=DevExGrid
 
建立一个内存TABLE,有控件
 
hpretty:
把你的例子发给我吧,多谢
bigstream@163.net
 
附加功能 将问题提前
 
对hpretty的程序作些修改:
……
sql.add('order by '+Column.Field.Name );
open;
 
多人接受答案了。
 
后退
顶部