Struttura CDaoIndexInfo

La CDaoIndexInfo struttura contiene informazioni su un oggetto indice definito per gli oggetti DAO (Data Access Object).

Nota

DAO è supportato tramite Office 2013. DAO 3.6 è la versione finale ed è considerata obsoleta.

Sintassi

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

Parametri

m_strName
Denomina in modo univoco l'oggetto campo. Per informazioni dettagliate, vedere l'argomento "Name Property" nella Guida di DAO.

m_pFieldInfos
Puntatore a una matrice di oggetti CDaoIndexFieldInfo che indicano quali campi tabledef o recordset sono campi chiave in un indice. Ogni oggetto identifica un campo nell'indice. L'ordinamento predefinito dell'indice è crescente. Un oggetto index può avere uno o più campi che rappresentano chiavi di indice per ogni record. Possono essere crescente, decrescente o una combinazione.

m_nFields
Numero di campi archiviati in m_pFieldInfos.

m_bPrimary
Se la proprietà Primary è TRUE, l'oggetto index rappresenta un indice primario. Un indice primario è costituito da uno o più campi che identificano in modo univoco tutti i record di una tabella in un ordine predefinito. Poiché il campo di indice deve essere univoco, anche la proprietà Unique dell'oggetto Index è impostata su TRUE in DAO. Se l'indice primario è costituito da più campi, ogni campo può contenere valori duplicati, ma ogni combinazione di valori di tutti i campi indicizzati deve essere univoca. Un indice primario è costituito da una chiave per la tabella e in genere contiene gli stessi campi della chiave primaria.

Quando si imposta una chiave primaria per una tabella, la chiave primaria viene definita automaticamente come indice primario per la tabella. Per altre informazioni, vedere gli argomenti "Proprietà primaria" e "Proprietà univoca" nella Guida di DAO.

Nota

Può essere presente, al massimo, un indice primario in una tabella.

m_bUnique
Indica se un oggetto indice rappresenta un indice univoco per una tabella. Se questa proprietà è TRUE, l'oggetto index rappresenta un indice univoco. Un indice univoco è costituito da uno o più campi che dispongono logicamente tutti i record in una tabella in un ordine univoco predefinito. Se l'indice è costituito da un campo, i valori in tale campo devono essere univoci per l'intera tabella. Se l'indice è costituito da più campi, ogni campo può contenere valori duplicati, ma ogni combinazione di valori di tutti i campi indicizzati deve essere univoca.

Se entrambe le proprietà Unique e Primary di un oggetto indice sono impostate su TRUE, l'indice è univoco e primario: identifica in modo univoco tutti i record nella tabella in un ordine logico predefinito. Se la proprietà Primary è impostata su FALSE, l'indice è un indice secondario. Gli indici secondari (chiave e non chiave) dispongono logicamente i record in un ordine predefinito senza fungere da identificatore per i record nella tabella.

Per altre informazioni, vedere gli argomenti "Proprietà primaria" e "Proprietà univoca" nella Guida di DAO.

m_bClustered
Indica se un oggetto indice rappresenta un indice cluster per una tabella. Se questa proprietà è TRUE, l'oggetto index rappresenta un indice cluster; in caso contrario, non lo fa. Un indice cluster è costituito da uno o più campi non chiave che, presi insieme, dispongono tutti i record in una tabella in un ordine predefinito. Con un indice cluster, i dati nella tabella vengono archiviati letteralmente nell'ordine specificato dall'indice cluster. Un indice cluster fornisce un accesso efficiente ai record in una tabella. Per altre informazioni, vedere l'argomento "Proprietà cluster" nella Guida di DAO.

Nota

La proprietà Clustered viene ignorata per i database che usano il motore di database Microsoft Jet perché il motore di database Jet non supporta gli indici cluster.

m_bIgnoreNulls
Indica se sono presenti voci di indice per i record con valori Null nei relativi campi di indice. Se questa proprietà è TRUE, i campi con valori Null non hanno una voce di indice. Per velocizzare la ricerca di record usando un campo, è possibile definire un indice per il campo. Se si consentono voci Null in un campo indicizzato e si prevede che molte delle voci siano Null, è possibile impostare la proprietà IgnoreNulls per l'oggetto index su TRUE per ridurre la quantità di spazio di archiviazione utilizzato dall'indice. L'impostazione della proprietà IgnoreNulls e l'impostazione della proprietà Required determinano insieme se un record con un valore di indice Null ha una voce di indice, come illustrato nella tabella seguente.

IgnoreNulls Richiesto Null nel campo indice
Vero False Valore Null consentito; nessuna voce di indice aggiunta.
Falso Falso Valore Null consentito; voce di indice aggiunta.
True o False Vero Valore Null non consentito; nessuna voce di indice aggiunta.

Per altre informazioni, vedere l'argomento "IgnoreNulls Property" nella Guida di DAO.

m_bRequired
Indica se un oggetto indice DAO richiede un valore non Null. Se questa proprietà è TRUE, l'oggetto index non consente un valore Null. Per altre informazioni, vedere l'argomento "Proprietà obbligatoria" nella Guida di DAO.

Suggerimento

Quando è possibile impostare questa proprietà per un oggetto indice DAO o un oggetto field (contenuto da un oggetto tabledef, recordset o querydef), impostarlo per l'oggetto field. La validità dell'impostazione della proprietà per un oggetto campo viene verificata prima di quella di un oggetto indice.

m_bForeign
Indica se un oggetto indice rappresenta una chiave esterna in una tabella. Se questa proprietà è TRUE, l'indice rappresenta una chiave esterna in una tabella. Una chiave esterna è costituita da uno o più campi in una tabella esterna che identificano in modo univoco una riga in una tabella primaria. Il motore di database Microsoft Jet crea un oggetto indice per la tabella esterna e imposta la proprietà Foreign quando si crea una relazione che impone l'integrità referenziale. Per altre informazioni, vedere l'argomento "Proprietà esterna" nella Guida di DAO.

m_lDistinctCount
Indica il numero di valori univoci per l'oggetto indice incluso nella tabella associata. Controllare la proprietà DistinctCount per determinare il numero di valori univoci o chiavi in un indice. Qualsiasi chiave viene conteggiata una sola volta, anche se potrebbero essere presenti più occorrenze di tale valore se l'indice consente valori duplicati. Queste informazioni sono utili nelle applicazioni che tentano di ottimizzare l'accesso ai dati valutando le informazioni sull'indice. Il numero di valori univoci è noto anche come cardinalità di un oggetto indice. La proprietà DistinctCount non rifletterà sempre il numero effettivo di chiavi in un determinato momento. Ad esempio, una modifica causata dal rollback di una transazione non verrà riflessa immediatamente nella proprietà DistinctCount. Per altre informazioni, vedere l'argomento "DistinctCount Property" nella Guida di DAO.

Osservazioni:

I riferimenti a Primary, Secondary e All sopra indicano come le informazioni vengono restituite dalla GetIndexInfo funzione membro nelle classi CDaoTableDef e CDaoRecordset.

Gli oggetti Index non sono rappresentati da una classe MFC. Gli oggetti DAO sottostanti oggetti MFC della classe CDaoTableDef o CDaoRecordset contengono invece una raccolta di oggetti index, denominati insieme Indexes. Queste classi forniscono funzioni membro per accedere a singoli elementi delle informazioni sull'indice oppure è possibile accedervi tutti contemporaneamente con un CDaoIndexInfo oggetto chiamando la GetIndexInfo funzione membro dell'oggetto contenitore.

CDaoIndexInfo dispone di un costruttore e di un distruttore per allocare e deallocare correttamente le informazioni sul campo dell'indice in m_pFieldInfos.

Le informazioni recuperate dalla GetIndexInfo funzione membro di un oggetto tabledef vengono archiviate in una CDaoIndexInfo struttura. Chiamare la GetIndexInfo funzione membro dell'oggetto tabledef contenitore nella cui raccolta Indexes è archiviato l'oggetto index. CDaoIndexInfo definisce anche una Dump funzione membro nelle compilazioni di debug. È possibile usare Dump per eseguire il dump del contenuto di un CDaoIndexInfo oggetto .

Requisiti

Intestazione: afxdao.h

Vedi anche

Strutture, stili, callback e mappe messaggi
CDaoTableDef::GetIndexInfo