JetSetCurrentIndex-Funktion

Gilt für: Windows | Windows Server

JetSetCurrentIndex-Funktion

Mit der JetSetCurrentIndex-Funktion kann der aktuelle Index eines Cursors festgelegt werden. Der aktuelle Index eines Cursors definiert, welche Datensätze in einer Tabelle für diesen Cursor sichtbar sind und in welcher Reihenfolge sie angezeigt werden, indem der Satz von Indexeinträgen ausgewählt wird, die zum Verfügbar machen dieser Datensätze verwendet werden sollen.

    JET_ERR JET_API JetSetCurrentIndex(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in_opt      const tchar* szIndexName
    );

Parameter

sesid

Die Sitzung, die für diesen Aufruf verwendet werden soll.

tableid

Der Cursor, der für diesen Aufruf verwendet werden soll.

szIndexName

Der Name des Indexes, der für den Cursor ausgewählt werden soll.

Wenn dieser Parameter NULL oder eine leere Zeichenfolge ist, wird der gruppierte Index ausgewählt. Wenn ein primärer Index für die Tabelle definiert ist, wird dieser Index ausgewählt, da er mit dem gruppierten Index identisch ist. Wenn kein primärer Index für die Tabelle definiert ist, wird der sequenzielle Index ausgewählt. Der sequenzielle Index verfügt über keine Indexdefinition. Weitere Informationen finden Sie unter JetCreateIndex.

Wenn pindexid nicht NULL ist, wird der Indexname ignoriert, und der Index wird durch seine Index-ID ausgewählt.

Rückgabewert

Diese Funktion gibt den JET_ERR datentyp mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine Errors and Error Handling Parameters.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errBadItagSequence

Ein sekundärer Index wird mit der Option JET_bitNoMove ausgewählt, und es gibt keinen Wert für die erste mehrwertige Schlüsselspalte in der Definition des neuen Indexes, der der angegebenen Sequenznummer entspricht.

JET_errClientRequestToStopJetService

Es ist nicht möglich, den Vorgang abschließen, da alle Aktivitäten auf der -Instanz, die der Sitzung zugeordnet ist, aufgrund eines Aufrufs von JetStopService beendet wurden.

JET_errInvalidIndexId

Der Inhalt der Index-ID war ungültig oder abgelaufen und muss aktualisiert werden. Dies kann für JetSetCurrentIndex auftreten, wenn:

  • pindexid- cbStruct hat nicht die erwartete Größe > (Windows Server 2003 und spätere Versionen).

  • Die Engine wurde heruntergefahren, seit die Index-ID abgerufen wurde.

  • Alle Cursor, die auf die Tabelle verweisen, die den Index enthält, der der Index-ID entspricht, wurden geschlossen, und die Engine hat die Definition dieses Indexes aus dem Schemacache entfernt.

  • Die Index-ID wird mit einem Cursor verwendet, der in der falschen Tabelle geöffnet ist.

  • Der Index wurde gelöscht oder ist für die Sitzung noch nicht sichtbar.

JET_errInstanceUnavailable

Der Vorgang kann nicht abgeschlossen werden, da für die der Sitzung zugeordnete Instanz ein schwerwiegender Fehler aufgetreten ist, der erfordert, dass der Zugriff auf alle Daten widerrufen wird, um die Integrität dieser Daten zu schützen.

Dieser Fehler wird nur von xp Windows und späteren Versionen zurückgegeben.

JET_errInvalidName

Einer der angegebenen Objektnamen war ungültig. Alle Objektnamen müssen demselben Satz von Regeln entsprechen. Nachfolgend sind diese Regeln aufgeführt:

  • Objektnamen müssen aus ASCII-Zeichen bestehen.

  • Objektnamen müssen mindestens ein Zeichen lang sein.

  • Objektnamen dürfen die Länge JET_cbNameMost (64) Zeichen nicht überschreiten.

  • Objektnamen beginnen möglicherweise nicht mit einem Leerzeichen.

  • Objektnamen dürfen keine ASCII-Steuerzeichen enthalten (0x00 bis 0x1F).

  • Objektnamen dürfen kein Ausrufezeichen (!), Punkt (.), linke Klammer ([) oder rechte Klammer (]) enthalten.

  • Nach der Überprüfung wird nur der Teil der Zeichenfolge bis zum ersten Leerzeichen (falls möglich) für den Objektnamen verwendet. Dies bedeutet, dass Objektnamen möglicherweise auch kein Leerzeichen enthalten.

JET_errInvalidParameter

Einer der bereitgestellten Parameter enthielt einen unerwarteten Wert oder einen Wert, der in Kombination mit dem Wert eines anderen Parameters nicht sinnvoll war. Dies kann bei JetSetCurrentIndex der Fall sein, wenn pindexid nicht NULL und pindexid- cbStruct nicht die erwartete Größe hat (Windows XP und frühere > Releases).

JET_errNoCurrentRecord

Ein sekundärer Index wird mit der Option JET_bitNoMove ausgewählt, und es gibt keinen Indexeintrag im neuen Index, der dem Datensatz entspricht, der dem Indexeintrag an der aktuellen Position des Cursors im alten Index zugeordnet ist.

JET_errNotInitialized

Der Vorgang kann nicht abgeschlossen werden, da die der Sitzung zugeordnete Instanz noch nicht initialisiert wurde.

JET_errOutOfCursors

Die Engine hat ihren Ressourcenpool zum Öffnen von Cursorn ausgeschöpft. Die maximale Anzahl von Cursorn, die zu einem beliebigen Zeitpunkt geöffnet werden können, wird mithilfe von JET_paramMaxCursors. Weitere Informationen finden Sie unter JetSetSystemParameter. Dies kann für JetSetCurrentIndex passieren, wenn ein sekundärer Index ausgewählt wurde und die Engine keinen internen Cursor öffnen kann, um diesen Index zu verwenden.

JET_errRestoreInProgress

Der Vorgang kann nicht abgeschlossen werden, da ein Wiederherstellungsvorgang für die -Instanz durchgeführt wird, die der Sitzung zugeordnet ist.

JET_errSessionSharingViolation

Dieselbe Sitzung kann nicht gleichzeitig für mehrere Threads verwendet werden.

Dieser Fehler wird nur von xp Windows und späteren Versionen zurückgegeben.

JET_errTermInProgress

Der Vorgang kann nicht abgeschlossen werden, da die der Sitzung zugeordnete Instanz heruntergefahren wird.

Bei Erfolg wird der aktuelle Index des Cursors auf den angeforderten Index festgelegt. Indexeinträge können jetzt mit JetSeek gemäß der Indexdefinition des angeforderten Indexes gesucht werden. Indexeinträge können auch mit JetMove in der von dieser Indexdefinition angegebenen Reihenfolge aufzählt werden. Die aktuelle Position des Cursors wird entweder auf den ersten Indexeintrag im Index (JET_bitMoveFirst) oder auf einen bestimmten Indexeintrag festgelegt, der mit der aktuellen Position des Cursors im alten Index (JET_bitNoMove) verknüpft ist. Es erfolgt keine Änderung des Datenbankstatus.

Bei einem Fehler befinden sich der aktuelle Index und die aktuelle Position des Cursors in einem nicht definierten Zustand. Es erfolgt keine Änderung des Datenbankstatus.

Bemerkungen

Wenn der Index-ID-Hinweis veraltet ist, schlägt die API einfach fehl. In diesem Fall gibt es keinen Fallback auf den Textnamen des Indexes, wie erwartet. Dieser Fallback muss manuell vom Aufrufer der API durchgeführt werden.

Anforderungen

Anforderung Wert

Client

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

Erfordert Windows Server 2008, Windows Server 2003 oder Windows 2000 Server.

Header

Wird in Esent.h deklariert.

Bibliothek

Verwenden Sie ESENT.lib.

DLL

Erfordert ESENT.dll.

Unicode

Wird als JetSetCurrentIndexW (Unicode) und JetSetCurrentIndexA (ANSI) implementiert.

Weitere Informationen

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXID
JetCreateIndex
JetGetCurrentIndex
JetGetIndexInfo
JetGetTableIndexInfo
JetMove
JetSeek
JetSetCurrentIndex
JetSetSystemParameter
JetStopService