对TClientDataSet中的数据进行排序

sadpacific 2000-06-28 04:32:00
在三层数据库程序中,客户端使用了TClientDataSet控件,数据从服务器取来之后,存放在TClientDataSet中。
请教高手:怎样按字段,对数据进行排序,既要有升序,要能按降序?
...全文
460 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
NightCloud 2001-01-11
  • 打赏
  • 举报
回复
在取得数据后,加入索引(是建在内存中的)
ClientDataSet1.AddIndex('a','yourfield1',[],'','',0);
ClientDataSet1.AddIndex('b','yourfield2',[],'','',0);
ClientDataSet1.AddIndex('c','yourfield3',[],'','',0);
然后就可以指定ClientDataSet1的indexName属性对数据进行排序了:
ClientDataSet1.IndexName='a';

saoren 2000-12-16
  • 打赏
  • 举报
回复
with ClientDataset1 do
begin
Close;
CommandText:='select * from table order by FieldName'
Open;
end;
sadpacific 2000-12-16
  • 打赏
  • 举报
回复
To cjf:
你可不可以说的详细一点?
我有预感,你的答案将是极为有用的。这50大洋注定属于你。
但是,你能否说的详细一点呢?
AaronChengBJ 2000-12-16
  • 打赏
  • 举报
回复
对不起,开始我不太清楚你是这样的结构,但这样应该是可以的,你试一下:
with clientdataset1 do
with IndexDefs do
begin
Clear;
with AddIndexDef do begin
Name := 'Fld1Indx';
Fields := 'Field1';
Options := [ixdescending]; //降序
end;
end;
w102272 2000-12-16
  • 打赏
  • 举报
回复
问一个问题,如果我的clientdataset不是通过Provider提供数据的,而是采用
独立的cds文件加载的,那么commandtext不就没法用了吗?
这种情况下,如何作YIYU的方法是可以的,但是只能作升序,不能作降序,怎么办?
AaronChengBJ 2000-12-16
  • 打赏
  • 举报
回复
升序
select * from table order by Fieldname ASC;
降序
select * from table order by fieldname DESC;
AaronChengBJ 2000-12-16
  • 打赏
  • 举报
回复
开个玩笑,这50分应该是我和sanren共同分享吧。呵呵!
AaronChengBJ 2000-12-16
  • 打赏
  • 举报
回复
我同意saoren的观点,我认为这是最优的方法。
不过你要保证你的应用服务器端的datasetprovider(数据提供者)的potions中的pAllowcommandText属性为True.

建议:尽量使用Sql编写数据库程序。
cjf 2000-09-25
  • 打赏
  • 举报
回复
可以通过动态建立索引进行,AddIndex,只存在于内存中。
yiyu 2000-09-24
  • 打赏
  • 举报
回复
可以用索引嘛,你只要设TclientDataset中的indexfieldnames属性就可以了。
如你要按 "BH" 字段进行排序那么就 Clientdataset1.indexfieldnames:='bh';
就可以以。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧