CDaoIndexInfo, structure
La CDaoIndexInfo
structure contient des informations sur un objet d’index défini pour les objets d’accès aux données (DAO).
Remarque
DAO est pris en charge par le biais d’Office 2013. DAO 3.6 est la version finale, et elle est considérée comme obsolète.
Syntaxe
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
};
Paramètres
m_strName
Nomme de manière unique l’objet de champ. Pour plus d’informations, consultez la rubrique « Name Property » dans L’aide de DAO.
m_pFieldInfos
Pointeur vers un tableau d’objets CDaoIndexFieldInfo indiquant quels champs tabledef ou recordset sont des champs clés dans un index. Chaque objet identifie un champ dans l’index. L’ordre d’index par défaut est croissant. Un objet d’index peut avoir un ou plusieurs champs représentant des clés d’index pour chaque enregistrement. Celles-ci peuvent être croissants, décroissants ou une combinaison.
m_nFields
Nombre de champs stockés dans m_pFieldInfos
.
m_bPrimary
Si la propriété primaire a la valeur TRUE, l’objet d’index représente un index principal. Un index principal se compose d’un ou plusieurs champs qui identifient de manière unique tous les enregistrements d’une table dans un ordre prédéfini. Étant donné que le champ d’index doit être unique, la propriété Unique de l’objet Index est également définie sur TRUE dans DAO. Si l’index principal se compose de plusieurs champs, chaque champ peut contenir des valeurs en double, mais chaque combinaison de valeurs de tous les champs indexés doit être unique. Un index principal se compose d’une clé pour la table et contient généralement les mêmes champs que la clé primaire.
Lorsque vous définissez une clé primaire pour une table, la clé primaire est automatiquement définie comme index principal de la table. Pour plus d’informations, consultez les rubriques « Primary Property » et « Unique Property » dans L’aide de DAO.
Remarque
Il peut y avoir, au plus, un index principal sur une table.
m_bUnique
Indique si un objet d’index représente un index unique pour une table. Si cette propriété a la valeur TRUE, l’objet d’index représente un index unique. Un index unique se compose d’un ou plusieurs champs qui organisent logiquement tous les enregistrements d’une table dans un ordre unique et prédéfini. Si l’index se compose d’un champ, les valeurs de ce champ doivent être uniques pour la table entière. Si l’index se compose de plusieurs champs, chaque champ peut contenir des valeurs en double, mais chaque combinaison de valeurs de tous les champs indexés doit être unique.
Si les propriétés Unique et Primaire d’un objet d’index sont définies sur TRUE, l’index est unique et principal : il identifie de manière unique tous les enregistrements de la table dans un ordre logique prédéfini. Si la propriété primaire a la valeur FALSE, l’index est un index secondaire. Les index secondaires (clé et non clé) organisent logiquement les enregistrements dans un ordre prédéfini sans servir d’identificateur pour les enregistrements de la table.
Pour plus d’informations, consultez les rubriques « Primary Property » et « Unique Property » dans L’aide de DAO.
m_bClustered
Indique si un objet d’index représente un index cluster pour une table. Si cette propriété a la valeur TRUE, l’objet index représente un index cluster ; sinon, ce n’est pas le cas. Un index cluster se compose d’un ou plusieurs champs non clés qui, ensemble, organisent tous les enregistrements d’une table dans un ordre prédéfini. Avec un index cluster, les données de la table sont littéralement stockées dans l’ordre spécifié par l’index cluster. Un index cluster fournit un accès efficace aux enregistrements d’une table. Pour plus d’informations, consultez la rubrique « Clustered Property » dans l’aide de DAO.
Remarque
La propriété Clustered est ignorée pour les bases de données qui utilisent le moteur de base de données Microsoft Jet, car le moteur de base de données Jet ne prend pas en charge les index cluster.
m_bIgnoreNulls
Indique s’il existe des entrées d’index pour les enregistrements qui ont des valeurs Null dans leurs champs d’index. Si cette propriété a la valeur TRUE, les champs avec des valeurs Null n’ont pas d’entrée d’index. Pour accélérer la recherche d’enregistrements à l’aide d’un champ, vous pouvez définir un index pour le champ. Si vous autorisez les entrées Null dans un champ indexé et attendez que la plupart des entrées soient Null, vous pouvez définir la propriété IgnoreNulls pour que l’objet d’index ait la valeur TRUE pour réduire la quantité d’espace de stockage utilisée par l’index. Le paramètre de propriété IgnoreNulls et le paramètre de propriété Obligatoire déterminent ensemble si un enregistrement avec une valeur d’index Null a une entrée d’index, comme le montre le tableau suivant.
IgnoreNulls | Requis | Null dans le champ d’index |
---|---|---|
True | False | Valeur Null autorisée ; aucune entrée d’index ajoutée. |
False | False | Valeur Null autorisée ; entrée d’index ajoutée. |
Vrai ou Faux | True | Valeur Null non autorisée ; aucune entrée d’index ajoutée. |
Pour plus d’informations, consultez la rubrique « IgnoreNulls Property » dans L’aide de DAO.
m_bRequired
Indique si un objet d’index DAO nécessite une valeur non Null. Si cette propriété a la valeur TRUE, l’objet index n’autorise pas de valeur Null. Pour plus d’informations, consultez la rubrique « Propriété requise » dans l’aide de DAO.
Conseil
Lorsque vous pouvez définir cette propriété pour un objet d’index DAO ou un objet champ (contenu par un objet tabledef, recordset ou querydef), définissez-la pour l’objet champ. La validité du paramètre de propriété d’un objet de champ est vérifiée avant celle d’un objet d’index.
m_bForeign
Indique si un objet d’index représente une clé étrangère dans une table. Si cette propriété a la valeur TRUE, l’index représente une clé étrangère dans une table. Une clé étrangère se compose d’un ou plusieurs champs d’une table étrangère qui identifient de manière unique une ligne dans une table primaire. Le moteur de base de données Microsoft Jet crée un objet d’index pour la table étrangère et définit la propriété étrangère lorsque vous créez une relation qui applique l’intégrité référentielle. Pour plus d’informations, consultez la rubrique « Foreign Property » dans L’aide de DAO.
m_lDistinctCount
Indique le nombre de valeurs uniques pour l’objet d’index inclus dans la table associée. Vérifiez la propriété DistinctCount pour déterminer le nombre de valeurs uniques ou de clés dans un index. Toute clé n’est comptée qu’une seule fois, même s’il peut y avoir plusieurs occurrences de cette valeur si l’index autorise les valeurs dupliquées. Ces informations sont utiles dans les applications qui tentent d’optimiser l’accès aux données en évaluant les informations d’index. Le nombre de valeurs uniques est également appelé cardinalité d’un objet d’index. La propriété DistinctCount ne reflète pas toujours le nombre réel de clés à un moment donné. Par exemple, une modification provoquée par une restauration de transaction ne sera pas reflétée immédiatement dans la propriété DistinctCount. Pour plus d’informations, consultez la rubrique « DistinctCount Property » dans L’aide de DAO.
Notes
Les références à Primary, Secondary et All ci-dessus indiquent comment les informations sont retournées par la GetIndexInfo
fonction membre dans les classes CDaoTableDef et CDaoRecordset.
Les objets Index ne sont pas représentés par une classe MFC. Au lieu de cela, les objets DAO sous-jacents des objets MFC de la classe CDaoTableDef ou CDaoRecordset contiennent une collection d’objets d’index, appelée collection Indexes. Ces classes fournissent des fonctions membres pour accéder à des éléments individuels d’informations d’index, ou vous pouvez tous y accéder simultanément avec un CDaoIndexInfo
objet en appelant la GetIndexInfo
fonction membre de l’objet conteneur.
CDaoIndexInfo
a un constructeur et un destructeur pour allouer et libérer correctement les informations de champ d’index dans m_pFieldInfos
.
Les informations récupérées par la GetIndexInfo
fonction membre d’un objet tabledef sont stockées dans une CDaoIndexInfo
structure. Appelez la GetIndexInfo
fonction membre de l’objet tabledef conteneur dans lequel la collection Indexes est stockée. CDaoIndexInfo
définit également une Dump
fonction membre dans les builds de débogage. Vous pouvez utiliser Dump
pour vider le contenu d’un CDaoIndexInfo
objet.
Spécifications
En-tête : afxdao.h
Voir aussi
Structures, styles, rappels et tables de messages
CDaoTableDef ::GetIndexInfo