Compartilhar via


Estrutura CDaoIndexInfo

A estrutura CDaoIndexInfo contém informações sobre um objeto de índice definido para DAO (objetos de acesso a dados).

Sintaxe

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
Nomeia exclusivamente o objeto de campo. Para detalhes, confira o tópico "Propriedade Name" na Ajuda do DAO.

m_pFieldInfos
Um ponteiro para uma matriz de objetos CDaoIndexFieldInfo indicando quais campos tabledef ou recordset são campos-chave em um índice. Cada objeto identifica um campo no índice. A ordenação de índice padrão é crescente. Um objeto de índice pode ter um ou mais campos que representam chaves de índice para cada registro. Elas podem ser crescentes, decrescentes ou uma combinação.

m_nFields
O número de campos armazenados em m_pFieldInfos.

m_bPrimary
Se a propriedade Primary for TRUE, o objeto de índice representará um índice primário. Um índice primário consiste em um ou mais campos que identificam exclusivamente todos os registros de uma tabela em uma ordem predefinida. Como o campo de índice precisa ser exclusivo, a propriedade única do objeto Índice também é definida como TRUE no DAO. Se o índice primário consistir em mais de um campo, cada campo poderá conter valores duplicados, mas cada combinação de valores de todos os campos indexados precisará ser exclusiva. Um índice primário consiste em uma chave para a tabela e geralmente contém os mesmos campos que a chave primária.

Ao definir uma chave primária para uma tabela, a chave primária é definida automaticamente como o índice primário da tabela. Para obter mais informações, confira o tópico "Propriedade Primária" e "Propriedade Única" na Ajuda do DAO.

Observação

Pode haver, no máximo, um índice primário em uma tabela.

m_bUnique
Indica se um objeto de índice representa um índice exclusivo para uma tabela. Se essa propriedade for TRUE, o objeto de índice representará um índice exclusivo. Um índice exclusivo consiste em um ou mais campos que organizam logicamente todos os registros em uma tabela em uma ordem exclusiva e predefinida. Se o índice consistir em um campo, os valores nesse campo precisarão ser exclusivos para toda a tabela. Se o índice consistir em mais de um campo, cada campo poderá conter valores duplicados, mas cada combinação de valores de todos os campos indexados precisará ser exclusiva.

Se as propriedades Unique e Primary de um objeto de índice forem definidas como TRUE, o índice será exclusivo e primário: ele identificará exclusivamente todos os registros na tabela em uma ordem lógica predefinida. Se a propriedade Primary estiver definida como FALSE, o índice será um índice secundário. Índices secundários (chave e não chave) organizam logicamente registros em uma ordem predefinida sem servir como um identificador para registros na tabela.

Para obter mais informações, confira o tópico "Propriedade Primária" e "Propriedade Única" na Ajuda do DAO.

m_bClustered
Indica se um objeto de índice representa um índice em cluster para uma tabela. Se essa propriedade for TRUE, o objeto de índice representará um índice clusterizado; caso contrário, não. Um índice clusterizado consiste em um ou mais campos não chave que, juntos, organizam todos os registros em uma tabela em uma ordem predefinida. Com um índice clusterizado, os dados na tabela são literalmente armazenados na ordem especificada pelo índice clusterizado. Um índice clusterizado oferece acesso eficiente aos registros em uma tabela. Para obter mais informações, confira o tópico "Propriedade em Cluster" na Ajuda do DAO.

Observação

A propriedade Clustered é ignorada para bancos de dados que usam o mecanismo de banco de dados Microsoft Jet porque esse mecanismo não permite índices clusterizados.

m_bIgnoreNulls
Indica se há entradas de índice para registros que têm valores nulos em seus campos de índice. Se essa propriedade for TRUE, os campos com valores nulos não terão uma entrada de índice. Para acelerar a pesquisa de registros usando um campo, você pode definir um índice para o campo. Se você permitir entradas nulas em um campo indexado e esperar que muitas das entradas sejam nulas, poderá definir a propriedade IgnoreNulls para o objeto de índice como TRUE para reduzir a quantidade de espaço de armazenamento que o índice usa. As configurações de propriedade IgnoreNulls e Required juntas determinam se um registro com um valor de índice nulo tem uma entrada de índice, como mostra a tabela a seguir.

IgnoreNulls Obrigatório Nulo no campo de índice
Verdadeiro Falso Valor nulo permitido; nenhuma entrada de índice adicionada.
Falso Falso Valor nulo permitido; entrada de índice adicionada.
Verdadeiro ou Falso Verdadeiro Valor nulo não permitido; nenhuma entrada de índice adicionada.

Para obter mais informações, confira o tópico "Propriedade IgnoreNulls" na Ajuda do DAO.

m_bRequired
Indica se um objeto de índice do DAO exige um valor não nulo. Se essa propriedade for TRUE, o objeto de índice não permitirá um valor nulo. Para obter mais informações, confira o tópico "Propriedade Obrigatória" na Ajuda do DAO.

Dica

Quando você puder definir essa propriedade para um objeto de índice DAO ou um objeto de campo (contido por um tabledef, recordset ou objeto querydef), defina-o para o objeto de campo. A validade da configuração de propriedade de um objeto de campo é verificada antes da validade de um objeto de índice.

m_bForeign
Indica se um objeto de índice representa uma chave estrangeira em uma tabela. Se essa propriedade for TRUE, o índice representará uma chave estrangeira em uma tabela. Uma chave estrangeira consiste em um ou mais campos em uma tabela estrangeira que identificam exclusivamente uma linha em uma tabela primária. O mecanismo de banco de dados Microsoft Jet cria um objeto de índice para a tabela estrangeira e define a propriedade Foreign quando você cria uma relação que impõe a integridade referencial. Para obter mais informações, confira o tópico "Propriedade Estrangeira" na Ajuda do DAO.

m_lDistinctCount
Indica o número de valores exclusivos para o objeto de índice incluído na tabela associada. Verifique a propriedade DistinctCount para determinar o número de valores exclusivos, ou chaves, em um índice. Cada chave é contada apenas uma vez, embora possa haver várias ocorrências desse valor se o índice permitir valores duplicados. Essas informações são úteis em aplicativos que tentam otimizar o acesso a dados avaliando informações de índice. O número de valores exclusivos também é conhecido como a cardinalidade de um objeto de índice. A propriedade DistinctCount nem sempre refletirá o número real de chaves em um determinado momento. Por exemplo, uma alteração causada por uma reversão de transação não será refletida imediatamente na propriedade DistinctCount. Para obter mais informações, confira o tópico "Propriedade DistinctCount" na Ajuda do DAO.

Comentários

As referências a Primário, Secundário e Todos acima indicam como as informações são retornadas pela função membro GetIndexInfo nas classes CDaoTableDef e CDaoRecordset.

Os objetos de índice não são representados por uma classe MFC. Em vez disso, objetos DAO subjacentes a objetos MFC da classe CDaoTableDef ou CDaoRecordset contêm uma coleção de objetos de índice, chamada coleção Indexes. Essas classes fornecem funções membro para acessar itens individuais de informações de índice, ou você pode acessá-las de uma só vez com um objeto CDaoIndexInfo chamando a função membro GetIndexInfo do objeto recipiente.

CDaoIndexInfotem um construtor e um destruidor para alocar e desalocar corretamente as informações do campo de índice.m_pFieldInfos

As informações recuperadas pela função membro GetIndexInfo de um objeto tabledef são armazenadas em uma estrutura CDaoIndexInfo. Chame a função membro GetIndexInfo do objeto tabledef que contém o objeto tabledef em que a coleção de índices armazena o objeto de índice. CDaoIndexInfo também define uma função membro Dump em builds de depuração. Você pode usar Dump para despejar o conteúdo de um objeto CDaoIndexInfo.

Requisitos

Cabeçalho: afxdao.h

Confira também

Estruturas, estilos, retornos de chamada e mapas de mensagem
CDaoTableDef::GetIndexInfo