0

Delphi XE2 では、Name などの多くのフィールドを持つ ClientDataSet があります。値型 String として、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 のようなスタイルでフォーマットされた文字列フィールド (文字列の並べ替えが適用されたときにフィールドを時系列に並べることができます) を行い、ユーザー表示の書式設定用の計算フィールドを作成します。
  • TDatasetProviderの OnGetRecords イベントで新しいフィールドを作成し、日付フィールドとして入力します。
  • 上記と同様ですが、日付が ISO ライクなスタイルでフォーマットされた文字列フィールドを作成します。

可能であれば、個人的には最初のアプローチをお勧めします。

于 2012-12-03T19:17:43.543 に答える