对 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 数据集进行排序的主要内容,如果未能解决你的问题,请参考以下文章

按多列对数据视图中的结果集进行排序

如何在熊猫/python中的行标题中通过部分搜索对数据集进行排序

使用javascript对数据集进行排序

如何编写 sql 查询对数据集进行排序或分组

delphi中 dataset容易出错的地方

在 Scala 中对数据集 [String] 进行排序