Delphi数据集排序

4
我有一个未排序的数据集(来自Devart的TMSQuery),由于在打开查询后我会操作记录,所以无法使用ORDER BY进行排序,因此“ORDER BY”给出的顺序会丢失。
我不想重写整个逻辑,所以应该找到一种方法来对数据集进行排序。
我可以将数据集分配给TMemDataSet(DevArt类)的派生类(Devart的TVirtualTable),但是之后如何进行排序(我需要按日期字段排序)?
我阅读了this question,但它并没有真正包含我正在寻找的答案。

1
从简介中可以看出:“TMemDataset是一种独特的完全可索引的内存表,它的工作方式类似于常规的TTable,只不过记录和索引都存储在RAM中。[snip]对表进行排序就像执行tbMem.OrderBy := 'Fld1;Fld2'一样简单。”因此,这看起来就是您的解决方案。 - Jan Doggen
2
我不知道你所指的组件,但对于ADO,你可以使用ADOQuery1.Sort := 'LastName ASC, DateDue DESC'。 - Bharat
由于我的原因,有一些误解:TMemDataSet是DevArt类,派生自TDataSet,而您提到的那个是第三方组件,具有我需要的功能:http://www.shareit.com/product.html?productid=102196&language=FR&affiliateid=200067214。 - UnDiUdin
嗯,无论如何,通过挖掘,我找到了IndexFieldNames属性,它可以满足我的需求。 - UnDiUdin
1个回答

9

使用IndexFieldNames,我解决了这个问题,这正是我所需要的。直接从TMSQuery组件中:

MSQuery1.IndexFieldNames := 'EXECUTION_DATE'; //this does the job

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接