Bde.DBTables.TTable.AddIndex
Delphi
procedure AddIndex(const Name, Fields: string; Options: TIndexOptions; const DescFields: string = '');
C++
void __fastcall AddIndex(const System::UnicodeString Name, const System::UnicodeString Fields, Data::Db::TIndexOptions Options, const System::UnicodeString DescFields = System::UnicodeString());
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | Bde.DBTables.pas Bde.DBTables.hpp |
Bde.DBTables | TTable |
説明
テーブルの新しいインデックスを作成します。
AddIndex を呼び出すと、データセット コンポーネントに関連付けられている既存のテーブルの新しいインデックスを作成できます。この手続きで作成されるインデックスは、データセット コンポーネントのベースとなるデータベース テーブルに追加されます。
Name パラメータは新しいインデックスの名前です。Name には、使用する特定のデータベース タイプに有効なインデックス名を指定する必要があります(命名規則はデータベースの種類によって異なります)。
Fields パラメータには、新しいインデックスの基になるフィールドの名前を指定します。複数のフィールドが使用されている場合は、リスト内のフィールド名をセミコロンで区切ります。
Options パラメータはインデックスの属性の集合です。Options には、次の TIndexOptions 定数のいずれか 1 つまたは複数を含めることができます。また、これらの定数をまったく含めなくてもかまいません。
- ixPrimary
- ixUnique
- ixDescending
- ixCaseInsensitive
- ixExpression
すべてのデータベース システムが、これらのオプションを必ずしもすべてサポートしているわけではありません。同じ種類のテーブルであっても、そのうちの特定のバージョンでしか指定のオプションがサポートされていない場合もあります。使用する特定のデータベース システムのドキュメントを参照すれば、どのオプションがサポートされているかがわかります。個々の定数の定義およびそれを使用した場合の結果については、TIndexOptions 型のトピックを参照してください。
DescFields パラメータは、セミコロンで区切られたフィールド名のリストを格納した文字列です。
DescFields で指定するフィールドは、新しいインデックスを構成するフィールドのうち、降順でソートされるものです。 インデックス定義には含まれているが DescFields リストには含まれていないフィールドでは、デフォルトの昇順ソートが使用されます。単一のインデックスに昇順と降順の両方のフィールドが含まれることもあり得ます。
Table1.AddIndex('MostPaid', 'CustNo;SaleDate;AmountPaid', [ixCaseInsensitive], 'SaleDate;AmountPaid');
TIndexOptions Options;
Options << ixCaseInsensitive;
Table1->AddIndex("MostPaid", "CustNo;SaleDate;AmountPaid", Options, "SaleDate;AmountPaid");
警告: 現在のテーブルの種類に適用できないオプションを使ってインデックスを作成しようとすると、AddIndex で例外が発生します。
dBASE テーブルでは、テーブル レベルが 7 以上(Visual dBASE 7 と同時使用)の場合、一次インデックスと真に一意のインデックスのみサポートしています。dBASE テーブルでは、大文字/小文字を区別しないインデックスをサポートしていません。インデックスが複数のフィールドに基づいている場合や、インデックスで dBASE のデータ操作言語(DML)関数を使用している場合(つまり式インデックスの場合)は、ixExpression 定数を使用する必要があります。(セミコロンで区切られた)フィールド名のリストを AddIndex の Fields パラメータに指定するだけでは、dBASE の複数フィールド インデックスを作成することはできません。ixExpression 定数は dBASE テーブルにのみ適用できます。
Paradox テーブルでは、テーブル レベルが 7 以上の場合は二次インデックスの ixDescending オプションをサポートし、テーブル レベルが 5 以上の場合は ixUnique オプションをサポートします。ixDescending 定数と ixCaseInsensitive 定数は一次インデックスには適用できません。
その他の種類のテーブルの場合、適用可能なインデックス オプションの詳細については、そのデータベース システムのベンダ提供ドキュメントを参照してください。