Share via


CDaoIndexInfo-Struktur

Die CDaoIndexInfo-Struktur enthält Informationen zu einem Indexobjekt, das für Datenzugriffsobjekte (Data Access Object, DAO) definiert ist.

Syntax

struct CDaoIndexInfo {
    CDaoIndexInfo();                    // Constructor
    CString m_strName;                  // Primary
    CDaoIndexFieldInfo* m_pFieldInfos;  // Primary
    short m_nFields;                    // Primary
    BOOL m_bPrimary;                    // Secondary
    BOOL m_bUnique;                     // Secondary
    BOOL m_bClustered;                  // Secondary
    BOOL m_bIgnoreNulls;                // Secondary
    BOOL m_bRequired;                   // Secondary
    BOOL m_bForeign;                    // Secondary
    long m_lDistinctCount;              // All

    // Below the // Implementation comment:
    // Destructor, not otherwise documented
};

Parameter

m_strName
Benennt das Feldobjekt eindeutig. Weitere Informationen finden Sie im Thema „Name-Eigenschaft“ in der DAO-Hilfe.

m_pFieldInfos
Ein Zeiger auf ein Array von CDaoIndexFieldInfo-Objekten, die angeben, welche Tabledef- oder Recordsetfelder Schlüsselfelder in einem Index sind. Jedes Objekt identifiziert ein Feld im Index. Die Standardindexreihenfolge ist aufsteigend. Ein Indexobjekt kann mindestens ein Feld aufweisen, das Indexschlüssel für jeden Datensatz darstellt. Diese können aufsteigend, absteigend oder eine Kombination sein.

m_nFields
Die Anzahl der in m_pFieldInfos gespeicherten Felder.

m_bPrimary
Wenn die Eigenschaft „Primary“ TRUE ist, stellt das Indexobjekt einen primären Index dar. Ein primärer Index besteht aus einem Feld oder mehreren Feldern, die alle Datensätze in einer Tabelle in einer vordefinierten Reihenfolge eindeutig identifizieren. Da das Indexfeld eindeutig sein muss, wird die Eigenschaft „Unique“ des Indexobjekts in DAO ebenfalls auf TRUE festgelegt. Wenn der primäre Index aus mehr als einem Feld besteht, kann jedes Feld doppelte Werte enthalten, aber jede Kombination von Werten aus allen indizierten Feldern muss eindeutig sein. Ein primärer Index besteht aus einem Schlüssel für die Tabelle und enthält in der Regel dieselben Felder wie der Primärschlüssel.

Wenn Sie einen Primärschlüssel für eine Tabelle festlegen, wird der Primärschlüssel automatisch als primärer Index für die Tabelle definiert. Weitere Informationen finden Sie in der DAO-Hilfe in den Themen „Primary Property“ (Eigenschaft „Primary“) und „Unique Property“ (Eigenschaft „Unique“).

Hinweis

Es kann in einer Tabelle höchstens einen primären Index geben.

m_bUnique
Gibt an, ob ein Indexobjekt einen eindeutigen Index für eine Tabelle darstellt. Wenn diese Eigenschaft TRUE ist, stellt das Indexobjekt einen eindeutigen Index dar. Ein eindeutiger Index besteht aus einem Feld oder mehreren Feldern, die alle Datensätze in einer Tabelle in einer eindeutigen, vordefinierten Reihenfolge logisch anordnen. Wenn der Index aus einem Feld besteht, müssen die Werte in diesem Feld für die gesamte Tabelle eindeutig sein. Wenn der Index aus mehr als einem Feld besteht, kann jedes Feld doppelte Werte enthalten, aber jede Kombination von Werten aus allen indizierten Feldern muss eindeutig sein.

Wenn die Eigenschaften „Unique“ und „Primary“ eines Indexobjekts auf TRUE festgelegt sind, ist der Index eindeutig und primär: Er identifiziert alle Datensätze in der Tabelle in einer vordefinierten logischen Reihenfolge eindeutig. Wenn die Eigenschaft „Primary“ auf FALSE festgelegt ist, ist der Index ein sekundärer Index. Sekundäre Indizes (Schlüssel und Nichtschlüssel) ordnen Datensätze in einer vordefinierten Reihenfolge logisch an, ohne als Bezeichner für Datensätze in der Tabelle zu dienen.

Weitere Informationen finden Sie in der DAO-Hilfe in den Themen „Primary Property“ (Eigenschaft „Primary“) und „Unique Property“ (Eigenschaft „Unique“).

m_bClustered
Gibt an, ob ein Indexobjekt einen gruppierten Index für eine Tabelle darstellt. Wenn diese Eigenschaft TRUE ist, stellt das Indexobjekt einen gruppierten Index dar, andernfalls nicht. Ein gruppierter Index besteht aus einem Nichtschlüsselfeld oder mehreren Nichtschlüsselfeldern, die, insgesamt, alle Datensätze in einer Tabelle in einer vordefinierten Reihenfolge anordnen. Bei einem gruppierten Index werden die Daten in der Tabelle in der vom gruppierten Index angegebenen Reihenfolge literal gespeichert. Ein gruppierter Index bietet effizienten Zugriff auf Datensätze in einer Tabelle. Weitere Informationen finden Sie in der DAO-Hilfe im Thema „Clustered Property“ (Eigenschaft „Clustered“).

Hinweis

Die Eigenschaft „Clustered“ wird für Datenbanken ignoriert, die die Microsoft Jet-Datenbank-Engine verwenden, da die Jet-Datenbank-Engine gruppierte Indizes nicht unterstützt.

m_bIgnoreNulls
Gibt an, ob Indexeinträge für Datensätze mit NULL-Werten in ihren Indexfeldern enthalten sind. Wenn diese Eigenschaft TRUE ist, verfügen Felder mit NULL-Werten nicht über einen Indexeintrag. Um die Suche nach Datensätzen mithilfe eines Felds zu beschleunigen, können Sie einen Index für das Feld definieren. Wenn Sie NULL-Einträge in einem indizierten Feld zulassen und erwarten, dass viele der Einträge NULL sind, können Sie die Eigenschaft „IgnoreNulls“ für das Indexobjekt auf TRUE festlegen, um den vom Index verwendeten Speicherplatz zu reduzieren. Die Einstellung der Eigenschaft „IgnoreNulls“ und die Einstellung der Eigenschaft „Required“ bestimmen zusammen, ob ein Datensatz mit einem NULL-Indexwert über einen Indexeintrag verfügt, wie in der folgenden Tabelle dargestellt.

IgnoreNulls Erforderlich NULL im Indexfeld
Richtig False NULL-Wert zulässig; kein Indexeintrag hinzugefügt.
False False NULL-Wert zulässig; Indexeintrag hinzugefügt.
True oder False True NULL-Wert nicht zulässig; kein Indexeintrag hinzugefügt.

Weitere Informationen finden Sie in der DAO-Hilfe im Thema „IgnoreNulls Property“ (Eigenschaft „IgnoreNulls“).

m_bRequired
Gibt an, ob ein DAO-Indexobjekt einen Wert erfordert, der nicht NULL ist. Wenn diese Eigenschaft TRUE ist, lässt das Indexobjekt keinen NULL-Wert zu. Weitere Informationen finden Sie in der DAO-Hilfe im Thema „Required Property“ (Eigenschaft „Required“).

Tipp

Wenn Sie diese Eigenschaft entweder für ein DAO-Indexobjekt oder ein Feldobjekt (in einem Tabledef-, Recordset- oder Querydef-Objekt enthalten) festlegen können, legen Sie sie für das Feldobjekt fest. Die Gültigkeit der Eigenschafteneinstellung für ein Feldobjekt wird vor der Gültigkeit der Eigenschafteneinstellung für ein Indexobjekt überprüft.

m_bForeign
Gibt an, ob ein Indexobjekt einen Fremdschlüssel in einer Tabelle darstellt. Wenn diese Eigenschaft TRUE ist, stellt der Index einen Fremdschlüssel in einer Tabelle dar. Ein Fremdschlüssel besteht aus einem Feld oder mehreren Feldern in einer Fremdtabelle, die eine Zeile in einer primären Tabelle eindeutig identifizieren. Die Microsoft Jet-Datenbank-Engine erstellt ein Indexobjekt für die Fremdtabelle und legt die Eigenschaft „Foreign“ fest, wenn Sie eine Beziehung erstellen, die referenzielle Integrität erzwingt. Weitere Informationen finden Sie in der DAO-Hilfe im Thema „Foreign Property“ (Eigenschaft „Foreign“).

m_lDistinctCount
Gibt die Anzahl der eindeutigen Werte für das Indexobjekt an, die in der zugeordneten Tabelle enthalten sind. Überprüfen Sie die Eigenschaft „DistinctCount“, um die Anzahl der eindeutigen Werte oder Schlüssel in einem Index zu bestimmen. Alle Schlüssel werden nur einmal gezählt, auch wenn es möglicherweise mehrere Vorkommen dieses Werts gibt, wenn der Index doppelte Werte zulässt. Diese Informationen sind in Anwendungen nützlich, die versuchen, den Datenzugriff durch Auswertung von Indexinformationen zu optimieren. Die Anzahl eindeutiger Werte wird auch als Kardinalität eines Indexobjekts bezeichnet. Die Eigenschaft „DistinctCount“ spiegelt nicht immer die tatsächliche Anzahl von Schlüsseln zu einem bestimmten Zeitpunkt wider. Beispielsweise wird eine Änderung, die durch ein Transaktionsrollback verursacht wird, nicht sofort in der Eigenschaft „DistinctCount“ widergespiegelt. Weitere Informationen finden Sie in der DAO-Hilfe im Thema „DistinctCount Property“ (Eigenschaft „DistinctCount“).

Hinweise

Die oben genannten Verweise auf „Primary“, „Secondary“ und „All“ geben an, wie die Informationen von der Memberfunktion GetIndexInfo in den Klassen CDaoTableDef und CDaoRecordset zurückgegeben werden.

Indexobjekte werden nicht durch eine MFC-Klasse dargestellt. Stattdessen enthalten DAO-Objekte, die MFC-Objekten der Klasse CDaoTableDef oder CDaoRecordset zugrunde liegen, eine Auflistung von Indexobjekten, die als Auflistung von Indizes bezeichnet wird. Diese Klassen stellen Memberfunktionen für den Zugriff auf einzelne Elemente von Indexinformationen zur Verfügung, oder Sie können auf alle Elemente gleichzeitig mit einem CDaoIndexInfo-Objekt zugreifen, indem Sie die Memberfunktion GetIndexInfo des enthaltenden Objekts aufrufen.

CDaoIndexInfo verfügt über einen Konstruktor und einen Destruktor, um die Indexfeldinformationen in m_pFieldInfos ordnungsgemäß zuzuordnen und deren Zuordnung aufzuheben.

Informationen, die von der Memberfunktion GetIndexInfo eines Tabledef-Objekts abgerufen werden, werden in einer CDaoIndexInfo-Struktur gespeichert. Rufen Sie die Memberfunktion GetIndexInfo des enthaltenden Tabledef-Objekts auf, in dessen Auflistung von Indizes das Indexobjekt gespeichert ist. CDaoIndexInfo definiert zudem eine Memberfunktion Dump in Debugbuilds. Sie können Dump verwenden, um den Inhalt eines CDaoIndexInfo-Objekts auszugeben.

Anforderungen

Header: afxdao.h

Siehe auch

Strukturen, Stile, Rückrufe und Meldungszuordnungen
CDaoTableDef::GetIndexInfo