0

在 Delphi XE2 上,我有一个 ClientDataSet,它有许多字段作为名称,...它有一个名为 Date 的字段,作为值类型字符串。包含日期 (dd/mm/yyyy) 我想使用 FastReport 打印 ClientDataSet 的内容。我想之前根据日期字段对内容进行升序排序。我正在使用索引。但是这样做时,排序只会根据“/”之前的日期字符串的内容对字段进行排序。表单示例日期如:12/11/2012、15/10/2012、01/12/2012 排序如下:01/12/2012 - 12/11/2012 - 15/10/2012。知道如何正确执行此操作吗?

4

2 回答 2

3

排序是正确的!由于您有一个字符串字段,因此排序就像字符串排序一样,即从左到右。如果您希望它按日期排序,您需要一个日期字段或对字符串表示进行排序,如 yyyy/mm/dd。

于 2012-12-01T15:06:10.097 回答
0

你有一些选择:

  • 将该字段作为 DateTime 字段。您必须将原始 SQL 更改为此。
  • 执行 Marjan 的建议,将字符串字段格式化为类似 ISO 的样式(允许在应用字符串排序时按时间顺序排列字段),并为用户显示格式创建一个计算字段。
  • 在 的 OnGetRecords 事件上创建一个新字段TDatasetProvider并将其填充为日期字段。
  • 与上面类似,但创建一个日期格式为 ISO-Like 样式的字符串字段。

如果可能,我个人建议第一种方法。

于 2012-12-03T19:17:43.543 回答