Condividi tramite


Struttura CDaoIndexInfo

La struttura CDaoIndexInfo contiene informazioni su un oggetto indice definito per gli oggetti di accesso ai dati (DAO).

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
    In modo univoco assegna un nome all'oggetto campo. Per informazioni dettagliate, vedere l'argomento "Proprietà Nome" nella Guida DAO.

  • m_pFieldInfos
    Un puntatore a una matrice di oggetti CDaoIndexFieldInfo indicando così quali campi del recordset o tabledef sono campi chiave in un indice. Ogni oggetto identifica un campo dell'indice. L'ordine predefinito dell'indice è crescente. Un oggetto indice può contenere uno o più campi che rappresentano le chiavi di indice per ogni record. Queste possono essere crescenti, decrescenti, o una combinazione.

  • m_nFields
    Il numero di campi archiviati in m_pFieldInfos.

  • m_bPrimary
    Se la proprietà primaria è 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 index deve essere univoco, la proprietà Unique dell'oggetto indice viene impostata su TRUE in DAO. Se l'indice primario è costituito da più di un campo, ogni campo può contenere valori duplicati, ma ogni combinazione di valori da tutti i campi indicizzati deve essere univoca. Un indice primario è costituito da una chiave per la tabella e generalmente contiene gli stessi campi di chiave primaria.

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

    Nota

    Potrebbe esserci, 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 solitamente tutti i record di una tabella in un ordine univoco e predefinito. Se l'indice è costituito da un campo, i valori in quel campo devono essere univoci per l'intera tabella. Se l'indice primario è costituito da più di un campo, ogni campo può contenere valori duplicati, ma ogni combinazione di valori da 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 principale: Identifica in modo univoco tutti i record della tabella in un ordine predefinito e logico. Se la proprietà Primary è impostata su FALSE, l'indice è un indice secondario. Gli indici secondari (sia chiave e non chiave) dispongono logicamente i record in un ordine predefinito senza fungere da riferimento per record della tabella.

    Per ulteriori informazioni, vedere gli argomenti "Proprietà Primary" e Proprietà Unique" nella Guida di DAO.

  • m_bClustered
    Indica se un oggetto indice rappresenta un indice clustered per una tabella. Se questa proprietà è TRUE, l'oggetto Index rappresenta un indice cluster; in caso contrario, no. Un indice cluster è costituito da uno o più campi non chiave che, insieme, dispongono tutti i record di una tabella in un ordine predefinito. Con un indice cluster, i dati della tabella vengono archiviati letteralmente nell'ordine specificato dall'indice cluster. Un indice cluster fornisce l'accesso efficace ai record di una tabella. Per ulteriori informazioni, vedere l'argomento "Clustered Property" nella guida DAO.

    Nota

    La proprietà Clustered viene ignorata per i database che utilizzano il modulo di gestione 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 che contengono valori null nei campi di indice. Se questa proprietà è TRUE, i campi con i valori null non dispongono di una voce di indice. Per eseguire la ricerca dei record mediante un campo più velocemente, è possibile definire un indice per il campo. Se si abilitano le voci null in un campo indicizzato e richiedere che molte voci siano null, è possibile impostare la proprietà di IgnoreNulls dell'oggetto indice a TRUE per ridurre la quantità di spazio di archiviazione che l'indice utilizza. L'impostazione delle proprietà di IgnoreNulls e l'impostazione della proprietà Required determinano se un record con un valore di indice null dispone di una voce di indice, come illustrato nella tabella.

    IgnoreNulls

    Obbligatorio

    Null nel campo index

    True

    False

    Valore null consentito; nessuna voce di indice aggiunta.

    False

    False

    Valore null consentito; voce di indice aggiunta.

    True o False

    True

    Valore null non consentito; nessuna voce di indice aggiunta.

    Per ulteriori informazioni, vedere l'argomento "IgnoreNulls Property" nella guida 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 ulteriori informazioni, vedere l'argomento "Proprietà Required" nella guida DAO.

    Suggerimento

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

  • m_bForeign
    Indica se un oggetto indice rappresenta una chiave esterna di una tabella. Se questa proprietà è TRUE, l'indice rappresenta una chiave esterna di 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 ed imposta la proprietà Foreign quando si crea una relazione che applica l'integrità referenziale. Per ulteriori informazioni, vedere l'argomento "Proprietà Foreign" nella guida DAO.

  • m_lDistinctCount
    Indica il numero di valori univoci per l'oggetto Index inclusi nella tabella collegata. Controllare la proprietà di DistinctCount per determinare il numero di valori univoci, o keys, in un indice. Qualsiasi chiave viene calcolata una sola volta, anche se è possibile che esistano più occorrenze di tale valore se l'indice permette 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 è anche noto come la 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 da un rollback della transazione non verrà riportata immediatamente nella proprietà DistinctCount. Per ulteriori informazioni, vedere l'argomento "Proprietà DistinctCount" nella guida DAO.

Note

I riferimenti a Primary, Secondary e ALL indicano come l'informazione è restituita dalla funzione membro di GetIndexInfo nelle classi CDaoTableDef e CDaoRecordset.

Gli oggetti Index non sono rappresentati da una classe MFC. Viceversa, gli oggetti DAO che sono alla base degli oggetti MFC di classe CDaoTableDef o CDaoRecordset contengono una raccolta di oggetti indice, chiamata raccolta indici. Queste classi forniscono le funzioni membro per accedere ai singoli elementi di informazioni sull'indice, oppure è possibile accedervi contemporaneamente con un oggetto CDaoIndexInfo chiamando la funzione membro GetIndexInfo dell'oggetto contenitore.

CDaoIndexInfo dispone di un costruttore e un distruttore per allocare e liberare correttamente le informazioni del campo index in m_pFieldInfos.

Le informazioni recuperate dalla funzione membro di GetIndexInfo di un oggetto tabledef vengono archiviate in una struttura CDaoIndexInfo. Chiamare la funzione membro GetIndexInfo dell'oggetto contenitore tabledef nella raccolta di indici in cui l'oggetto Index viene archiviato. CDaoIndexInfo definisce anche una funzione membro Dump nelle compilazioni di debug. Si può utilizzare Dump per eseguire il dump del contenuto di un oggetto CDaoIndexInfo.

Requisiti

Intestazione: afxdao.h

Vedere anche

Riferimenti

CDaoTableDef::GetIndexInfo

Altre risorse

Strutture, stili, callback e mappe messaggi