使用ClientDataSet中的Date字段(作为String)进行索引

时间:2012-12-01 14:27:27

标签: delphi date sorting indexing dataset

在Delphi XE2上, 我有一个ClientDataSet,它有许多字段作为Name,... 它有一个名为Date的字段,作为值类型String。包含日期(年/月/日) 我想使用FastReport打印ClientDataSet的内容。 我想在之前根据日期字段对内容进行排序。我正在使用索引。 但是在执行此操作时,排序仅根据“/”之前的Date字符串的内容对字段进行排序。 形式示例日期如:12/11 / 2012,15 / 10 / 2012,01 / 12/2012正在排序如下:2012年12月1日 - 12/11/2012 - 15/10/2012。 你知道如何正确地做这件事吗?!

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

你有一些选择:

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

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