JetSetCurrentIndex4-Funktion

Gilt für: Windows | Windows Server

JetSetCurrentIndex4-Funktion

Die JetSetCurrentIndex4-Funktion wird verwendet, um den aktuellen Index eines Cursors festzulegen. 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, der zum Verfügbarmachen dieser Datensätze verwendet werden soll.

    JET_ERR JET_API JetSetCurrentIndex4(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in_opt      JET_PCSTR szIndexName,
      __in_opt      JET_INDEXID* pindexid,
      __in          JET_GRBIT grbit,
      __in          unsigned long itagSequence
    );

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.

pindexid

Die ID des Indexes, der für den Cursor ausgewählt werden soll.

Die Index-ID ist ein flüchtiges, undurchsichtiges Handle, das zum schnellen Auswählen eines Indexes verwendet werden kann. Diese ID kann mithilfe von JetGetIndexInfo oder JetGetTableIndexInfo mithilfe der Option JET_IdxInfoIndexId abgerufen werden.

Wenn pindexid NULL ist, wird der Index durch seinen Indexnamen ausgewählt, und die Index-ID wird ignoriert.

Wenn dieser Parameter nicht vorhanden ist, wird davon ausgegangen, dass sein Wert NULL ist.

grbit

Eine Gruppe von Bits, die die Optionen enthalten, die für diesen Aufruf verwendet werden sollen, einschließlich null oder mehr der folgenden Optionen.

Wert

Bedeutung

JET_bitMoveFirst

Diese Option gibt an, dass der Cursor am ersten Eintrag des angegebenen Indexes positioniert werden soll. Wenn der gruppierte Index ausgewählt wird (primärer Index oder sequenzieller Index), und der aktuelle Index ein sekundärer Index ist, wird JET_bitMoveFirst angenommen. Wenn der aktuelle Index ausgewählt wird, wird diese Option ignoriert, und es wird keine Änderung an der Cursorposition vorgenommen.

JET_bitNoMove

Diese Option gibt an, dass der Cursor auf dem Indexeintrag des neuen Indexes positioniert werden soll, der dem Dem Indexeintrag zugeordneten Datensatz an der aktuellen Position des Cursors im alten Index entspricht.

Wenn die Definition für den neuen Index mindestens eine mehrwertige Schlüsselspalte enthält, ist der Zielindexeintrag mehrdeutig. In diesem Fall wird der angegebene itagSequence verwendet, um auszuwählen, welcher Mehrwert der wichtigsten mehrwertigen Schlüsselspalte zum Positionieren des Cursors verwendet wird. Es ist nur erforderlich, eine einzelne itagSequence zu übergeben, auch bei mehreren mehrwertigen Schlüsselspalten, da das Modul nur alle Werte für die wichtigste mehrwertige Schlüsselspalte erweitert. Weitere Informationen finden Sie unter JetCreateIndex .

Wenn JET_bitMoveFirst angegeben wird, wird diese Option ignoriert.

Wenn der aktuelle Index ausgewählt wird, wird diese Option ignoriert, und es wird keine Änderung an der Cursorposition vorgenommen. Wenn dieser Parameter nicht vorhanden ist, wird davon ausgegangen, dass sein Wert JET_bitMoveFirst ist.

itagSequence

Sequenznummer des mehrwertigen Spaltenwerts, der verwendet wird, um den Cursor auf dem neuen Index zu positionieren.

Dieser Parameter wird nur in Verbindung mit JET_bitNoMove verwendet. Weitere Informationen finden Sie in der Beschreibung dieser Option.

Wenn dieser Parameter nicht vorhanden oder auf Null festgelegt ist, wird davon ausgegangen, dass sein Wert 1 ist.

Rückgabewert

Diese Funktion gibt den JET_ERR-Datentyp mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu möglichen ESE-Fehlern finden Sie unter Erweiterbare Speichermodulfehler und Fehlerbehandlungsparameter.

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 für den neuen Index, der der angegebenen Sequenznummer entspricht.

JET_errClientRequestToStopJetService

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

JET_errInstanceUnavailable

Es ist nicht möglich, den Vorgang abzuschließen, da beim instance, der der Sitzung zugeordnet ist, 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 Windows XP und höheren Versionen zurückgegeben.

JET_errInvalidIndexId

Der Inhalt der Index-ID war ungültig oder abgelaufen und muss aktualisiert werden. Dies kann für JetSetCurrentIndex4 in folgenden Fällen auftreten:

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

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

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

  • Die Index-ID wird verwendet, wenn ein Cursor in der falschen Tabelle geöffnet wird.

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

JET_errInvalidName

Einer der angegebenen Objektnamen war ungültig. Alle Objektnamen müssen demselben Regelsatz 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 JET_cbNameMost (64) Zeichen länge nicht überschreiten.

  • Objektnamen beginnen möglicherweise nicht mit einem Leerzeichen.

  • Objektnamen dürfen keine ASCII-Steuerelementzeichen 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 vorhanden) für den Objektnamen verwendet. Dies bedeutet effektiv, 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 für JetSetCurrentIndex4 auftreten, wenn pindexid nicht NULL und pindexid-cbStruct> nicht die erwartete Größe aufweist (Windows XP und frühere Versionen).

JET_errNoCurrentRecord

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

JET_errNotInitialized

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance noch nicht initialisiert wurde.

JET_errOutOfCursors

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

JET_errRestoreInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da auf dem der Sitzung zugeordneten instance ein Wiederherstellungsvorgang ausgeführt wird.

JET_errSessionSharingViolation

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

Dieser Fehler wird nur von Windows XP und höheren Versionen zurückgegeben.

JET_errTermInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance heruntergefahren wird.

Bei Erfolg wird der aktuelle Index des Cursors auf den angeforderten Index festgelegt. Indexeinträge können nun mithilfe von JetSeek gemäß der Indexdefinition des angeforderten Indexes gesucht werden. Indexeinträge können auch mithilfe von JetMove in der durch diese Indexdefinition angegebenen Reihenfolge aufgezä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 wird keine Änderung des Datenbankzustands vorgenommen.

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

Bemerkungen

Wenn der Index-ID-Hinweis veraltet ist, schlägt die API einfach fehl. Es gibt in diesem Fall kein 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.

Kopfzeile

Deklariert in Esent.h.

Bibliothek

Verwenden Sie ESENT.lib.

DLL

Erfordert ESENT.dll.

Unicode

Implementiert als JetSetCurrentIndex4W (Unicode) und JetSetCurrentIndex4A (ANSI).

Weitere Informationen

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