有关于排序的问题,请进。(30分)

  • 主题发起人 主题发起人 sunys
  • 开始时间 开始时间
S

sunys

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用CLIENTDATASET来实现排序,不能用SQL语句ORDER BY。
而实现的效果是比如 ORDER BY FIELD1 ASC,FIELD2 DESC
要求可以实现多个栏位,其中可能有些正排,有些倒排。
 
dataset.sort
 
dataset.sort.开玩笑。
 
去死吧你
你这牛B还问个屁
 
随你怎么说了。刚才我说过火了,不好意思。
不过你要看清题目才回答。谢谢你了。
 
我也很抱歉,心情最近不太好
 
没关系了,不骂不相识,呵呵。还是继续想问题
 
你的意思是说不想再向数据库请求SQL查询,而在本地内存已经获得的数据进行本地排序,
进行本地数据操作?
 
是这样的。我的CLIENTDATASET只是在本地的,比如打开一个它曾经保存的文件。
 
找一个可以排序的StringGrid或DBGrid来显示数据吧!:)
 
HI,不行的,我的是CLIENTDATASET,
 
用CLIENTDATASET的indexDefs属性,打开以后新增加一个索引(即排序),在fields里面写上要排序的字段,
然后把CLIENTDATASET的indexname属性设为你刚才的这个索引,就行了 给分
 
不知道我说的对不对.
我的想法是,还是用SQL中的Order by,但可以是在你需要的时候
生成sql语句,然后在执行clidentdataset的查询
比如:
var
strSQL : string;
begin
strSQL := 'select * from t_table ';
.....
// 如果你需要某种排序,就在这里改写
strSQL := strSQL + 'ORDER BY ...';
clientDataSet.Close
clientDataSet.CommandText := strSQl;
clientDataSet.open;
.........
end;
 
墨剑,你说的我都知道。我同时要一个字段升序,另一个字段降序 怎么做呢?
guoqi:这个CLIENTDATASET取的是本地的数据文件。所以不能用SQL语句
 
本地数据库,的确不好处理
建议你采用Sql 方式,然后 Batchmove 进去!
我还想知道,什么原因要用本地数据库?
 
什么原因要用本地数据库?
其实我在客户端的CLIENTDATASET只是接收COM+对象传回来的DATA的,CLIENTDATASET没有对应的
DATASETPROVIDER的,所以只能是这样排序了。
 
procedure AddIndex(const Name, Fields: string;
Options: TIndexOptions;
const DescFields: string = '';
const CaseInsFields: string = '';
const GroupingLevel: Integer = 0 );
 
在一个索引中可以指定某些字段降序排列,某些字段升序排列。
 
后退
顶部