Funzione JetSetIndexRange

Si applica a: Windows | Windows Server

Funzione JetSetIndexRange

La funzione JetSetIndexRange limita temporaneamente il set di voci di indice che il cursore può usare JetMove a quelli che iniziano dalla voce di indice corrente e terminano alla voce di indice che corrisponde ai criteri di ricerca specificati dalla chiave di ricerca in tale cursore e ai criteri associati specificati. Una chiave di ricerca deve essere stata creata in precedenza usando JetMakeKey.

    JET_ERR JET_API JetSetIndexRange(
      __in          JET_SESID sesid,
    __in          JET_TABLEID tableidSrc,
      __in          JET_GRBIT grbit
    );

Parametri

sesid

Sessione da usare per questa chiamata.

tableidSrc

Cursore da usare per questa chiamata.

grbit

Un gruppo di bit che contengono le opzioni da usare per questa chiamata, che includono zero o più dei seguenti elementi:

Valore

Significato

JET_bitRangeInclusive

Questa presenza o assenza di questa opzione indica i criteri di limite dell'intervallo di indice. Quando presente, questa opzione indica che il limite dell'intervallo di indici è inclusivo. Se assente, questa opzione indica che il limite dell'intervallo di indici è esclusivo. Quando il limite dell'intervallo di indici è inclusivo, tutte le voci di indice che corrispondono esattamente ai criteri di ricerca vengono incluse nell'intervallo.

JET_bitRangeInstantDuration

Questa opzione richiede che l'intervallo di indici venga rimosso non appena è stato stabilito. Tutti gli altri aspetti dell'operazione rimangono invariati. Ciò è utile per il test per l'esistenza di voci di indice che corrispondono ai criteri di ricerca.

JET_bitRangeRemove

Questa opzione richiede l'annullamento di un intervallo di indici esistente nel cursore. Una volta annullato l'intervallo di indici, sarà possibile spostarsi oltre la fine dell'intervallo di indici usando JetMove. Se un intervallo di indici non è già attivo, JetSetIndexRange avrà esito negativo con JET_errInvalidOperation.

Quando questa opzione viene specificata, tutte le altre opzioni vengono ignorate.

JET_bitRangeUpperLimit

Se questa opzione viene usata, la chiave di ricerca nel cursore rappresenta i criteri di ricerca per la voce di indice più vicina alla fine dell'indice che corrisponde all'intervallo di indice. L'intervallo di indici verrà stabilito tra la posizione corrente del cursore e questa voce di indice in modo che tutte le corrispondenze possano essere trovate seguendo l'indice usando JetMove con JET_MoveNext o un offset positivo.

Non è significativo usare questa opzione con una chiave di ricerca creata usando JetMakeKey usando un'opzione con caratteri jolly destinata a trovare le voci di indice più vicine all'inizio dell'indice.

Se questa opzione viene omessa, la chiave di ricerca nel cursore rappresenta i criteri di ricerca per la voce di indice più vicina all'inizio dell'indice che corrisponde all'intervallo di indice. L'intervallo di indici verrà stabilito tra la posizione corrente del cursore e questa voce di indice in modo che tutte le corrispondenze possano essere trovate camminando indietro sull'indice usando JetMove con JET_MovePrevious o un offset negativo.

Non è significativo omettere questa opzione con una chiave di ricerca creata usando JetMakeKey usando un'opzione con caratteri jolly destinata a trovare le voci di indice più vicine alla fine dell'indice.

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.

Per JetSetIndexRange, ciò significa che un intervallo di indici esistente è stato annullato o che è presente almeno una voce di indice all'interno dell'intervallo di indici.

JET_errClientRequestToStopJetService

Non è possibile completare l'operazione perché tutte le attività nell'istanza associata alla sessione non sono state interrotte in seguito a una chiamata a JetStopService.

JET_errInstanceUnavailable

Non è possibile 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.

Questo errore verrà restituito solo da Windows XP e versioni successive.

JET_errInvalidOperation

Questo errore verrà restituito da JetSetIndexRange quando è stato specificato JET_bitRangeRemove e non è stato effettivo alcun intervallo di indici.

JET_errKeyNotMade

Non esiste alcuna chiave di ricerca corrente per il cursore. JetSetIndexRange richiede che il cursore disponga di una chiave di ricerca valida perché userà tale chiave per i criteri di ricerca usati per trovare le voci di indice.

JET_errNoCurrentIndex

Non esiste alcun indice corrente per il cursore. Ciò avviene per JetSetIndexRange se il cursore si trova nell'indice cluster di una tabella, non è stato definito un indice primario. L'impostazione di un intervallo di indici su tale indice non è supportato.

JET_errNoCurrentRecord

Questo errore verrà restituito da JetSetIndexRange per indicare che non sono presenti voci di indice all'interno dell'intervallo di indice.

JET_errNotInitialized

Non è possibile completare l'operazione perché l'istanza associata alla sessione non è ancora stata inizializzata.

JET_errRestoreInProgress

Non è possibile completare l'operazione 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.

Questo errore verrà restituito solo da Windows XP e versioni successive.

JET_errTermInProgress

Non è possibile completare l'operazione perché l'istanza associata alla sessione viene arrestata.

In caso di esito positivo, se viene specificato JET_bitRangeRemove, l'intervallo di indici attualmente in vigore viene annullato. Se JET_bitRangeRemove non è specificato e JET_bitRangeInstantDuration viene specificato, non è effettivo alcun intervallo di indici. Se non viene specificato né JET_bitRangeRemove né JET_bitRangeInstantDuration, un nuovo intervallo di indici è effettivo. Questo intervallo di indici limita temporaneamente il set di voci di indice che il cursore può camminare usando JetMove a quelli che iniziano dalla voce di indice corrente e terminano alla voce di indice corrispondente ai criteri di ricerca. La posizione del cursore rimarrà invariata. Se una chiave di ricerca è stata creata per il cursore, tale chiave di ricerca verrà eliminata. Non verrà eseguita alcuna modifica allo stato del database.

Se JET_errNoCurrentRecord non viene restituito, non viene restituito alcun intervallo di indici. Se JET_errNoCurrentRecord viene restituito, viene applicato un nuovo intervallo di indici. Questo intervallo di indici limita temporaneamente il set di voci di indice che il cursore può camminare usando JetMove a quelli che iniziano dalla voce di indice corrente e terminano alla voce di indice corrispondente ai criteri di ricerca. La posizione del cursore rimarrà invariata. Se JET_errNoCurrentRecord è stato restituito e una chiave di ricerca è stata creata per il cursore, tale chiave di ricerca verrà eliminata. Non verrà eseguita alcuna modifica allo stato del database.

Commenti

Un intervallo di indici è volatile e verrà annullato automaticamente se qualsiasi spostamento diverso da JetMove viene eseguito sul cursore.

Gli intervalli di indici funzionano solo in una direzione. Se viene stabilito un limite superiore, viene impedito solo un movimento in avanti usando JetMove con JET_MoveNext o un offset positivo dopo aver raggiunto la fine dell'intervallo di indice. È comunque possibile lasciare l'intervallo di indice in questo caso usando JetMove con JET_MovePrevious o un offset negativo. Si verifica una situazione analoga per un limite inferiore.

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_GRBIT
JET_SESID
JET_TABLEID
JetMakeKey
JetMove
JetSetIndexRange
JetStopService