6

TClientDataSet のインデックスの順序を逆にしたいのですが、次のコードはうまくいくように見えますが、何もしません。インデックスの順序を逆にする良い方法はありますか?

procedure TForm8.Button1Click(Sender: TObject);
var
  index: TIndexDef;
begin
  index := ClientDataSet1.IndexDefs.Find('LengthIndex');
  if ixDescending in index.Options then
    index.Options := index.Options - [ixDescending]
  else
    index.Options := index.Options + [ixDescending];
end;
4

2 に答える 2

9

TIndexDef.Optionsインデックスの作成時に使用されます。既存のインデックスに影響を与えるために使用することはできません。ドキュメントを参照してください(強調鉱山):

新しいインデックスを作成するときは、オプションを使用してインデックスの属性を指定します。オプションには、0 個以上の TIndexOption 定数 ixPrimary、ixUnique、ixDescending、ixCaseInsensitive、および ixExpression を含めることができます。

既存のインデックスの定義を調べる場合は、オプションを参照して、インデックスの作成に使用されるオプションを確認してください。

ixDescending値セットを使用して別のインデックスを作成する必要があります。その後、プロパティを変更するだけで前後に切り替えることができIndexNameます。

于 2012-10-29T22:52:39.847 に答える