CDaoIndexInfo (Estructura)

La estructura CDaoIndexInfo contiene información sobre un objeto de índice definido para objetos de acceso a datos (DAO).

Sintaxis

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
};

Parámetros

m_strName
Asigna un nombre único al objeto de campo. Para más información, vea el tema "Name Property" (Propiedad name) en la Ayuda de DAO.

m_pFieldInfos
Puntero a una matriz de objetos CDaoIndexFieldInfo que indica qué campos de conjunto de registros o definición de tabla son campos clave de un índice. Cada objeto identifica un campo en el índice. El orden de índice predeterminado es ascendente. Un objeto de índice puede tener uno o varios campos que representan claves de índice para cada registro. Pueden ser ascendentes, descendentes o una combinación.

m_nFields
Número de campos almacenados en m_pFieldInfos.

m_bPrimary
Si la propiedad Primary es TRUE, el objeto de índice representa un índice principal. Un índice principal consta de uno o varios campos que identifican de forma única todos los registros de una tabla en un orden predefinido. Como el campo de índice debe ser único, la propiedad Unique del objeto Index también se establece en TRUE en DAO. Si el índice principal consta de más de un campo, cada campo puede contener valores duplicados, pero cada combinación de valores de todos los campos indexados debe ser única. Un índice principal consta de una clave para la tabla y normalmente contiene los mismos campos que la clave principal.

Cuando se establece una clave principal para una tabla, se define automáticamente como índice principal de la tabla. Para más información, vea los temas "Primary Property" (Propiedad principal) y "Unique Property" (Propiedad única) en la Ayuda de DAO.

Nota:

Puede haber, como máximo, un índice principal en una tabla.

m_bUnique
Indica si un objeto de índice representa un índice único para una tabla. Si esta propiedad es TRUE, el objeto de índice representa un índice que es único. Un índice único consta de uno o varios campos que organizan de forma lógica todos los registros de una tabla en un orden predefinido único. Si el índice consta de un campo, los valores de ese campo deben ser únicos para toda la tabla. Si el índice consta de más de un campo, cada campo puede contener valores duplicados, pero cada combinación de valores de todos los campos indexados debe ser única.

Si las propiedades Unique y Primary de un objeto de índice se establecen en TRUE, el índice es único y principal: identifica de forma única todos los registros de la tabla en un orden lógico predefinido. Si la propiedad Primary se establece en FALSE, el índice es un índice secundario. Los índices secundarios (con clave y sin clave) organizan de forma lógica los registros en un orden predefinido sin servir como identificador para los registros de la tabla.

Para más información, vea los temas "Primary Property" (Propiedad principal) y "Unique Property" (Propiedad única) en la Ayuda de DAO.

m_bClustered
Indica si un objeto de índice representa un índice agrupado para una tabla. Si esta propiedad es TRUE, el objeto de índice representa un índice agrupado; de lo contrario, no lo hace. Un índice agrupado consta de uno o varios campos sin clave que, juntos, organizan todos los registros de una tabla en un orden predefinido. Con un índice agrupado, los datos de la tabla se almacenan literalmente en el orden especificado por el índice agrupado. Un índice agrupado proporciona acceso eficaz a los registros de una tabla. Para más información, vea el tema "Clustered Property" (Propiedad Clustered) en la Ayuda de DAO.

Nota:

La propiedad Clustered se omite para las bases de datos que usan el motor de base de datos de Microsoft Jet porque el motor de base de datos Jet no admite índices agrupados.

m_bIgnoreNulls
Indica si hay entradas de índice para los registros que tienen valores NULL en sus campos de índice. Si esta propiedad es TRUE, los campos con valores NULL no tienen una entrada de índice. Para que la búsqueda de registros mediante un campo sea más rápida, puede definir un índice para el campo. Si permite entradas NULL en un campo indexado y espera que muchas de las entradas sean NULL, puede establecer la propiedad IgnoreNulls del objeto de índice en TRUE para reducir la cantidad de espacio de almacenamiento que usa el índice. Los valores de propiedad IgnoreNulls y Required juntos determinan si un registro con un valor de índice NULL tiene una entrada de índice, como se muestra en la tabla siguiente.

IgnoreNulls Obligatorio NULL en el campo de índice
True False Valor NULL permitido; no se ha agregado ninguna entrada de índice.
False False Valor NULL permitido; se ha agregado una entrada de índice.
True o False True Valor NULL no permitido; no se ha agregado ninguna entrada de índice.

Para más información, vea el tema "IgnoreNulls Property" (Propiedad IgnoreNulls) en la Ayuda de DAO.

m_bRequired
Indica si un objeto de índice DAO necesita un valor distinto de NULL. Si esta propiedad es TRUE, el objeto de índice no permite un valor NULL. Para más información, vea el tema "Required Property" (Propiedad obligatoria) en la Ayuda de DAO.

Sugerencia

Cuando se puede establecer esta propiedad para un objeto de índice DAO o un objeto de campo (contenido por un objeto tabledef, recordset o querydef), esta opción se establece para el objeto de campo. La validez de la configuración de propiedad para un objeto de campo se comprueba antes que la de un objeto de índice.

m_bForeign
Indica si un objeto de índice representa una clave externa en una tabla. Si esta propiedad es TRUE, el índice representa una clave externa en una tabla. Una clave externa consta de uno o varios campos de una tabla externa que identifican de forma única una fila de una tabla principal. El motor de base de datos de Microsoft Jet crea un objeto de índice para la tabla externa y establece la propiedad Foreign al crear una relación que exige integridad referencial. Para más información, vea el tema "Foreign Property" (Propiedad externa) en la Ayuda de DAO.

m_lDistinctCount
Indica el número de valores únicos para el objeto de índice que se incluyen en la tabla asociada. Compruebe la propiedad DistinctCount para determinar el número de valores únicos, o claves, en un índice. Cualquier clave solo se cuenta una vez, aunque puede haber varias repeticiones de ese valor si el índice permite valores duplicados. Esta información es útil en aplicaciones que intentan optimizar el acceso a los datos mediante la evaluación de la información del índice. El número de valores únicos también se conoce como cardinalidad de un objeto de índice. La propiedad DistinctCount no siempre reflejará el número real de claves en un momento determinado. Por ejemplo, un cambio causado por una reversión de transacción no se reflejará inmediatamente en la propiedad DistinctCount. Para más información, vea el tema "DistinctCount Property" (Propiedad DistinctCount) en la Ayuda de DAO.

Comentarios

Las referencias anteriores a Primary, Secondary y All (Principal, Secundario y Todos) indican cómo se devuelve la información mediante la función miembro GetIndexInfo en las clases CDaoTableDef y CDaoRecordset.

Los objetos de índice no se representan mediante una clase MFC. En su lugar, los objetos DAO subyacentes a objetos MFC de la clase CDaoTableDef o CDaoRecordset contienen una colección de objetos de índice, denominada colección Indexes. Estas clases suministran funciones miembro para acceder a elementos individuales de información de índice, o puede acceder a todas ellas a la vez con un objeto CDaoIndexInfo si llama a la función miembro GetIndexInfo del objeto que lo contiene.

CDaoIndexInfo tiene un constructor y un destructor para asignar y desasignar correctamente la información del campo de índice en m_pFieldInfos.

La información recuperada por la función miembro GetIndexInfo de un objeto tabledef se almacena en una estructura CDaoIndexInfo. Llame a la función miembro GetIndexInfo del objeto tabledef que contiene en cuya colección Indexes se almacena el objeto de índice. CDaoIndexInfo también define una función miembro Dump en las compilaciones de depuración. Puede usar Dump para volcar el contenido de un objeto CDaoIndexInfo.

Requisitos

Encabezado: afxdao.h

Consulte también

Estructuras, estilos, devoluciones de llamada y mapas de mensajes
CDaoTableDef::GetIndexInfo