Condividi tramite


Funzione JetIndexRecordCount

Si applica a: Windows | Windows Server

Funzione JetIndexRecordCount

La funzione JetIndexRecordCount conta il numero di voci nell'indice corrente dalla posizione corrente in avanti. La posizione corrente è inclusa nel conteggio. Il conteggio può essere maggiore del numero totale di record nella tabella se l'indice corrente si trova su una colonna a più valori e le istanze della colonna hanno più valori. Se la tabella è vuota, verrà restituito 0 per il conteggio.

    JET_ERR JET_API JetIndexRecordCount(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out         unsigned long* pcrec,
      __in          unsigned long crecMax
    );

Parametri

sesid

Sessione da usare per questa chiamata.

tableid

Cursore da usare per questa chiamata.

pcrec

Puntatore a un valore long senza segno per ricevere il conteggio.

crecMax

Numero massimo di record da contare. Un valore crecMax pari a 0 indica che il conteggio è illimitato.

Valore restituito

Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti seguenti. Per altre informazioni sugli errori ESE possibili, vedere Errori del motore di archiviazione estendibili e parametri di gestione degli errori.

Codice restituito

Descrizione

JET_errSuccess

Operazione riuscita.

JET_errClientRequestToStopJetService

L'operazione non può essere completata perché tutte le attività nell'istanza associata alla sessione hanno interrotto come risultato di una chiamata a JetStopService.

JET_errInstanceUnavailable

Impossibile completare l'operazione perché l'istanza associata alla sessione ha rilevato un errore irreversibile che richiede che l'accesso a tutti i dati venga revocato per proteggere l'integrità dei dati.

Windows XP: Questo valore restituito viene introdotto in Windows XP.

JET_errNoCurrentRecord

Il cursore non è attualmente in un record e la tabella non è vuota.

Windows XP, Windows Server 2003, Windows 2000 Server e Windows 2000 Professional: Se il cursore viene posizionato in un intervallo di indice o indice vuoto, JetIndexRecordCount restituisce erroneamente JET_errNoCurrentRecord.

JET_errNotInitialized

L'operazione non può essere completata perché l'istanza associata alla sessione non è ancora stata inizializzata.

JET_errRestoreInProgress

L'operazione non può essere completata perché un'operazione di ripristino è in corso nell'istanza associata alla sessione.

JET_errSessionSharingViolation

La stessa sessione non può essere usata contemporaneamente per più thread.

Windows XP: Questo valore restituito viene introdotto in Windows XP.

JET_errTermInProgress

Impossibile completare l'operazione perché l'istanza associata alla sessione viene arrestata.

Se questa funzione ha esito positivo, il numero esatto di voci di indice, inclusa la posizione corrente e fino a crecMax (se non è 0), viene restituito nel lungo segno a cui punta da pcrec.

Se questa funzione ha esito negativo, non vengono apportate modifiche alla memoria allocata in precpos.

Commenti

Se la tabella non è vuota, il cursore deve essere posizionato sul record da cui iniziare il conteggio. Il conteggio includerà questo record e conteggierà fino al limite specificato in crecMax. Se crecMax è 0, l'operazione continuerà a contare fino alla fine dell'indice.

Gli intervalli di indici possono essere usati per costruire limitazioni di fine dell'indice artificiale per il conteggio. In questo modo, le sottorange di un indice possono essere conteggiate esattamente. Il cursore deve essere posizionato nella prima riga dell'intervallo. La fine della chiave di intervallo deve essere eseguita e quindi JetSetIndexRange deve essere usata per impostare l'intervallo superiore, inclusivo o esclusivamente. Infine, JetIndexRecordCount deve essere chiamato per contare esattamente l'intervallo.

JetIndexRecordCount obbedisce alla semantica delle transazioni e restituisce un conteggio accurato per questa sessione specifica nello stato transazionale corrente.

JetIndexRecordCount accede alle pagine foglia dell'indice per contare esattamente le voci. Di conseguenza, può eseguire una grande quantità di I/O e può essere lento. La limitazione crecMax deve essere usata per evitare un carico eccessivo. Se un intervallo è grande, potrebbe essere possibile contare l'intervallo in modo approssimativo usando JetGetRecordPosition.

Windows XP, Windows Server 2003, Windows 2000 Server e Windows 2000 Professional: Se il cursore è posizionato in un intervallo di indice o indice vuoto, JetIndexRecordCount restituisce erroneamente JET_errNoCurrentRecord anziché restituire un numero di record pari a zero. L'applicazione deve verificare se l'indice o l'intervallo di indici è vuoto in questo caso.

Requisiti

Requisito Valore

Client

Richiede Windows Vista, Windows XP o Windows 2000 Professional.

Server

Richiede Windows Server 2008, Windows Server 2003 o Windows 2000 Server.

Intestazione

Dichiarato in Esent.h.

Libreria

Usare ESENT.lib.

DLL

Richiede ESENT.dll.

Vedere anche

JET_ERR
JET_SESID
JET_TABLEID
JetGetRecordPosition
JetSetIndexRange
JetStopService