Funzione JetSetCurrentIndex2
Si applica a: Windows | Windows Server
Funzione JetSetCurrentIndex2
La funzione JetSetCurrentIndex2 imposta l'indice corrente di un cursore che definisce i record in una tabella visibili a tale cursore e l'ordine in cui vengono visualizzati selezionando il set di voci di indice da utilizzare per esporre tali record.
JET_ERR JET_API JetSetCurrentIndex2(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in_opt JET_PCSTR szIndexName,
__in JET_GRBIT grbit
);
Parametri
sesid
Sessione da utilizzare per questa chiamata.
tableid
Cursore da utilizzare per questa chiamata.
szIndexName
Nome dell'indice da selezionare per il cursore.
Se questo parametro è NULL o una stringa vuota, verrà selezionato l'indice cluster. Se per la tabella viene definito un indice primario, tale indice verrà selezionato perché corrisponde all'indice cluster. Se non viene definito alcun indice primario per la tabella, verrà selezionato l'indice sequenziale. L'indice sequenziale non ha alcuna definizione di indice. Per altre informazioni, vedere JetCreateIndex .
Se pindexid non è NULL, il nome dell'indice verrà ignorato e l'indice verrà selezionato dal relativo ID indice.
grbit
Gruppo di bit che contengono le opzioni da usare per questa chiamata, che includono zero o più dei seguenti elementi.
Valore |
Significato |
---|---|
JET_bitMoveFirst |
Questa opzione indica che il cursore deve essere posizionato sulla prima voce dell'indice specificato. Se l'indice cluster è selezionato (indice primario o indice sequenziale) e l'indice corrente è un indice secondario, si presuppone JET_bitMoveFirst. Se l'indice corrente è selezionato, questa opzione viene ignorata e non viene apportata alcuna modifica alla posizione del cursore. |
JET_bitNoMove |
Questa opzione indica che il cursore deve essere posizionato sulla voce di indice del nuovo indice corrispondente al record associato alla voce di indice nella posizione corrente del cursore sull'indice precedente. Se la definizione per il nuovo indice contiene almeno una colonna chiave multivalore, la voce dell'indice di destinazione è ambigua. In questo caso, l'oggetto itagSequence specificato viene usato per selezionare il multivalore della colonna chiave multivalore più significativa utilizzata per posizionare il cursore. È necessario passare un singolo itagSequence anche nel caso di più colonne chiave multivalore, perché il motore espande solo tutti i valori per la colonna chiave multivalore più significativa. Per altri dettagli, vedere JetCreateIndex . Se viene specificato JET_bitMoveFirst, questa opzione viene ignorata. Se l'indice corrente è selezionato, questa opzione viene ignorata e non viene apportata alcuna modifica alla posizione del cursore. Quando questo parametro non è presente, si presuppone che il relativo valore sia JET_bitMoveFirst. |
Valore restituito
Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti seguenti. Per altre informazioni sui possibili errori ESE, vedere Errori del motore di archiviazione estendibile e parametri di gestione degli errori.
Codice restituito |
Descrizione |
---|---|
JET_errSuccess |
Operazione riuscita. |
JET_errBadItagSequence |
Viene selezionato un indice secondario con l'opzione JET_bitNoMove e non esiste alcun valore per la prima colonna chiave multivalore nella nuova definizione per l'indice corrispondente al numero di sequenza specificato. |
JET_errClientRequestToStopJetService |
Non è possibile completare l'operazione perché tutte le attività sull'istanza associata alla sessione sono cessate a seguito di una chiamata a JetStopService. |
JET_errInstanceUnavailable |
Non è possibile completare l'operazione perché l'istanza associata alla sessione ha rilevato un errore irreversibile che richiede la revoca dell'accesso a tutti i dati per proteggere l'integrità dei dati. Questo errore verrà restituito solo da Windows XP e versioni successive. |
JET_errInvalidIndexId |
Il contenuto dell'ID indice non è valido o è scaduto e deve essere aggiornato. Ciò può verificarsi per JetSetCurrentIndex2 quando:
|
JET_errInvalidName |
Uno dei nomi di oggetto specificati non è valido. Tutti i nomi degli oggetti devono essere conformi allo stesso set di regole. Le regole sono le seguenti:
|
JET_errInvalidParameter |
Uno dei parametri forniti conteneva un valore imprevisto o conteneva un valore che non ha senso se combinato con il valore di un altro parametro. Ciò può verificarsi per JetSetCurrentIndex2 quando pindexid non è NULL e pindexid-cbStruct> non è delle dimensioni previste (Windows XP e versioni precedenti). |
JET_errNoCurrentRecord |
Viene selezionato un indice secondario con l'opzione JET_bitNoMove e non è presente alcuna voce di indice nel nuovo indice corrispondente al record associato alla voce di indice nella posizione corrente del cursore sull'indice precedente. |
JET_errNotInitialized |
Non è possibile completare l'operazione perché l'istanza associata alla sessione non è ancora stata inizializzata. |
JET_errOutOfCursors |
Il motore ha esaurito il pool di risorse usate per aprire i cursori. Il numero massimo di cursori che è possibile aprire contemporaneamente viene controllato tramite JET_paramMaxCursors. Per altre informazioni, vedere JetSetSystemParameter . Ciò può verificarsi per JetSetCurrentIndex2 quando è stato selezionato un indice secondario e il motore non può aprire un cursore interno per usare tale indice. |
JET_errRestoreInProgress |
Non è possibile completare l'operazione perché è in corso un'operazione di ripristino 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, l'indice corrente del cursore viene impostato sull'indice richiesto. È ora possibile cercare voci di indice usando JetSeek in base alla definizione di indice dell'indice richiesto. È anche possibile enumerare le voci di indice usando JetMove nell'ordine specificato da tale definizione di indice. La posizione corrente del cursore è impostata sulla prima voce di indice dell'indice (JET_bitMoveFirst) o su una voce di indice specifica correlata alla posizione corrente del cursore sull'indice precedente (JET_bitNoMove). Non verrà apportata alcuna modifica allo stato del database.
In caso di errore, l'indice corrente e la posizione corrente del cursore si trovano in uno stato non definito. Non verrà apportata alcuna modifica allo stato del database.
Commenti
Se l'hint id indice non è aggiornato, l'API ha semplicemente esito negativo. In questo caso non è previsto alcun fallback al nome di testo dell'indice. Questo fallback deve essere eseguito manualmente dal chiamante dell'API.
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. |
Unicode |
Implementato come JetSetCurrentIndex2W (Unicode) e JetSetCurrentIndex2A (ANSI). |
Vedere anche
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXID
JetCreateIndex
JetGetCurrentIndex
JetGetIndexInfo
JetGetTableIndexInfo
JetMove
JetSetSystemParameter
JetSeek
JetStopService