Estrutura CDaoIndexInfo
A estrutura CDaoIndexInfo
contém informações sobre um objeto de índice definido para DAO (objetos de acesso a dados).
Observação
O DAO tem suporte por meio do Office 2013. DAO 3.6 é a versão final e é considerada obsoleta.
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.
CDaoIndexInfo
tem 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