对 Delphi 数据集进行排序
Posted
技术标签:
【中文标题】对 Delphi 数据集进行排序【英文标题】:Sort a Delphi dataset 【发布时间】:2013-01-08 10:40:34 【问题描述】:我有一个未排序的数据集(来自 Devart 的 TMSQuery),我无法使用 ORDER BY 进行排序,因为我在打开查询后操作了记录,因此“ORDER BY”给出的顺序丢失了。
我不想重写整个逻辑,所以我应该找到一种方法来对数据集进行排序。
我可以将数据集分配给 TMemDataSet(TMemDataSet 是 DevArt 类)后代(来自 Devart 的 TVirtualTable),但是在此之后我如何排序(我需要按日期字段排序)?
我阅读了this question,但它并不包含我正在寻找的答案。
【问题讨论】:
来自简介:“TMemDataset 是一个独特的完全可索引的内存表,除了记录和索引都存储在 RAM 中之外,它的工作方式与常规 TTable 类似。[snip] 对表进行排序就像做 tbMem 一样简单.OrderBy := 'Fld1;Fld2';"所以这看起来像你的解决方案 我不知道您所指的组件,但对于 ADO,您可以使用 ADOQuery1.Sort := 'LastName ASC, DateDue DESC' 由于我的原因,有一些误解:TMemDataSet 是从 TDataSet 派生的 DevArt 类,而您提到的是具有我需要的功能的第三部分组件:shareit.com/… 呃,无论如何通过挖掘我找到了满足我需要的 IdexFieldNames 属性。 【参考方案1】:使用IndexFieldNames
我解决了这个问题,这正是我想要的。直接来自TMSQuery
组件:
MSQuery1.IndexFieldNames := 'EXECUTION_DATE'; //this does the job
【讨论】:
以上是关于对 Delphi 数据集进行排序的主要内容,如果未能解决你的问题,请参考以下文章