JetMakeKey-Funktion

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JetMakeKey-Funktion

Die JetMakeKey -Funktion konstruiert Search-Schlüssel, die dann vom verwendet werden können, erhalten eine Reihe von Einträgen in einem Index einige einfache Suchkriterien für ihre Schlüsselspaltenwerte. Ein Search-Schlüssel wird auch die systeminternen Eigenschaften eines Cursors und wird durch die wurde und JetSetIndexRange Vorgänge verwendet, um diese Suchkriterien auf dem aktuellen Index, Cursortyp Indexeinträge zu suchen. Ein kompletten Such-Schlüssel wird in einer Reihe von JetMakeKey Anrufe aufgebaut, in dem jeder Aufruf zum Laden des Spalte Werts für den nächsten Schlüsselspalte des aktuellen Index eines Cursors verwendet wird. Es ist auch möglich, einen zuvor erstellte Suche Schlüssel geladen werden, der von den Cursor mit JetRetrieveKeyabgerufen wurde.

JET_ERR JET_API JetMakeKey(
  __in          JET_SESID sesid,
  __in          JET_TABLEID tableid,
  __in_opt      const void* pvData,
  __in          unsigned long cbData,
  __in          JET_GRBIT grbit
);

Parameter

sesid

Die Sitzung für diesen Aufruf verwenden.

TableID

Der Mauszeiger für dieses Anrufs verwenden.

pvData

Der Puffer mit den Spaltendaten für die aktuelle Schlüsselspalte den aktuellen Index des Cursors für die Suche Schlüssels erstellt wird.

Der Datentyp der Spaltendaten im Puffer muss den Datentyp und andere Eigenschaften der Spaltendefinition für die aktuelle Schlüsselspalte genau übereinstimmen. Keine Typumwandlung wird auf die Spaltendaten jeglicher Art ausgeführt.

Wenn JET_bitNormalizedKey im JET_errInvalidGrbit -Parameter angegeben wird, muss der Puffer einen zuvor erstellte Suche Schlüssel enthalten. Diese Schlüssel werden mit einem Aufruf von JetRetrieveKeyabgerufen.

cbData

Die Größe in Bytes der Spaltendaten im Puffer bereitgestellt.

Wenn JET_bitNormalizedKey im JET_errInvalidGrbit -Parameter angegeben wird, ist dies die Größe des Schlüssels Suche im Puffer bereitgestellt.

Wenn die Größe der Spaltendaten gleich null ist, und klicken Sie dann den Inhalt des Puffers input ignoriert werden. Wenn JET_bitKeyDataZeroLength im JET_errInvalidGrbit -Parameter angegeben ist, und die aktuelle Schlüsselspalte den aktuellen Index des Cursors eine Spalte mit variabler Länge wird, werden davon ausgegangen, dass die Eingabe Spaltendaten Länge ein Nullwert sein. Andernfalls werden die Eingabe Spaltendaten angenommen einen NULL-Wert sein.

JET_errInvalidGrbit

Eine Gruppe von Bits 0 (null) oder mehrere der folgenden Optionen angeben.

Wert

Bedeutung

JET_bitFullColumnEndLimit

Die suchen-Taste sollte so konstruiert werden, dass alle Schlüsselspalten, die nach der aktuellen Schlüsselspalte stehen als Platzhalter gelten. Dies bedeutet, dass die erstellte suchen-Taste verwendet werden kann, um Indexeinträge übereinstimmen, die über Folgendes verfügen:

  • Die genaue Spaltenwerte für diese Schlüsselspalte und alle vorherigen Schlüsselspalten bereitgestellt.

  • Alle Spaltenwerte für nachfolgende Schlüsselspalten erforderlich ist.

Diese Option sollte beim Platzhalter Suche Schlüssel erstellen von verwendet werden, zum Suchen von Indexeinträgen am Ende eines Indexes verwendet werden. Das Ende der Index ist die Indexeintrag, der gefunden wird, wenn zum letzten Datensatz im betreffenden Index zu verschieben. Das Ende der Index ist nicht identisch mit high-End des Indexes, die abhängig von der Sortierreihenfolge der Schlüsselspalten im Index ändern können.

Diese Option ist nur unter Windows XP und spätere Versionen verfügbar.

JETbitFullColumnStartLimit

Die suchen-Taste sollte erstellt werden, dass alle Schlüsselspalten, die nach der aktuellen Schlüsselspalte stehen sollen Platzhalter berücksichtigt werden sollten. Dies bedeutet, dass die erstellte suchen-Taste verwendet werden kann, um Indexeinträge übereinstimmen, die über Folgendes verfügen:

  • Die genaue Spaltenwerte für diese Schlüsselspalte und alle vorherigen Schlüsselspalten bereitgestellt.

  • Alle Spaltenwerte für nachfolgende Schlüsselspalten erforderlich ist.

Diese Option sollte beim Platzhalter Suche Schlüssel erstellen verwendet werden, für die Suche nach Indexeinträge am nächsten an den Anfang des einen Index verwenden. Der Anfang des Indexes ist Indexeintrag, der gefunden wird, wenn zum ersten Datensatz im betreffenden Index zu verschieben. Starten des Index ist nicht identisch mit der niedrigste des Indexes, die abhängig von der Sortierreihenfolge der Schlüsselspalten im Index ändern können.

Diese Option ist nur unter Windows XP und spätere Versionen verfügbar.

JET_bitKeyDataZeroLength

Wenn die Größe des Puffers input 0 (null ist) und die aktuelle Schlüsselspalte eine Spalte mit variabler Länge ist, gibt diese Option an, dass der Puffer einen Nullwert Länge enthält. Andernfalls würde eine Eingabe Puffergröße 0 (null) einen NULL-Wert angeben.

JET_bitNewKey

Ein neuen Schlüssel für die Suche sollte erstellt werden. Eine beliebige Taste, bereits vorhandenen Suche wird verworfen.

JET_bitNormalizedKey

Wenn diese Option angegeben wird, werden alle anderen Optionen ignoriert, eine beliebige Taste, bereits vorhandenen Suche wird verworfen und den Inhalt der Puffer werden als neue Suche Schlüssel geladen.

JET_bitPartialColumnEndLimit

Die suchen-Taste sollte erstellt werden, so, dass die aktuelle Schlüsselspalte gilt als Präfix Platzhalter und, die alle Spalten, die nach der aktuellen Schlüsselspalte stehen Platzhalter werden berücksichtigt werden sollten. Dies bedeutet, dass die erstellte suchen-Taste verwendet werden kann, um Indexeinträge übereinstimmen, die über Folgendes verfügen:

  • Die genaue Spaltenwerte für diese Schlüsselspalte und alle vorherigen Schlüsselspalten bereitgestellt.

  • Alle Spaltenwerte für nachfolgende Schlüsselspalten erforderlich ist.

Diese Option sollte beim Platzhalter Suche Schlüssel erstellen von verwendet werden, zum Suchen von Indexeinträgen am Ende eines Indexes verwendet werden. Das Ende der Index ist die Indexeintrag, der gefunden wird, wenn zum letzten Datensatz im betreffenden Index zu verschieben. Das Ende der Index ist nicht identisch mit high-End des Indexes, die abhängig von der Sortierreihenfolge der Schlüsselspalten im Index ändern können.

Diese Option kann nicht verwendet werden, wenn die aktuelle Schlüsselspalte keine Textspalte oder eine Variable binäre Spalte ist. Der Vorgang wird mit 0xFFFFFC7C fehl, wenn dies versucht wird.

Diese Option ist nur unter Windows XP und spätere Versionen verfügbar.

JET_bitPartialColumnStartLimit

Diese Option gibt an, dass die suchen-Taste erstellt werden soll, dass die aktuelle Schlüsselspalte als Präfix Platzhalter gilt und alle wichtigen Spalten, die nach der aktuellen Schlüsselspalte stehen Platzhalter werden berücksichtigt werden sollten. Dies bedeutet, dass die erstellte suchen-Taste verwendet werden kann, um Indexeinträge übereinstimmen, die über Folgendes verfügen:

  • Die genaue Spaltenwerte für diese Schlüsselspalte und alle vorherigen Schlüsselspalten bereitgestellt.

  • Alle Spaltenwerte für nachfolgende Schlüsselspalten erforderlich ist.

Diese Option sollte beim Platzhalter Suche Schlüssel erstellen verwendet werden, für die Suche nach Indexeinträge am nächsten an den Anfang des einen Index verwenden. Der Anfang des Indexes ist Indexeintrag, der gefunden wird, wenn zum ersten Datensatz im betreffenden Index zu verschieben. Starten des Index ist nicht identisch mit der niedrigste des Indexes, die abhängig von der Sortierreihenfolge der Schlüsselspalten im Index ändern können.

Diese Option kann nicht verwendet werden, wenn die aktuelle Schlüsselspalte keine Textspalte oder eine Variable binäre Spalte ist. Der Vorgang wird mit 0xFFFFFC7C fehl, wenn dies versucht wird.

Diese Option ist nur unter Windows XP und spätere Versionen verfügbar.

JET_bitStrLimit

Diese Option gibt an, dass die suchen-Taste erstellt werden soll, dass alle Schlüsselspalten, die nach der aktuellen Schlüsselspalte stehen sollen Platzhalter berücksichtigt werden sollten. Dies bedeutet, dass die erstellte suchen-Taste verwendet werden kann, um Indexeinträge übereinstimmen, die über Folgendes verfügen:

  • Die genaue Spaltenwerte für diese Schlüsselspalte und alle vorherigen Schlüsselspalten bereitgestellt.

  • Alle Spaltenwerte für nachfolgende Schlüsselspalten erforderlich ist.

Diese Option sollte beim Platzhalter Suche Schlüssel erstellen von verwendet werden, zum Suchen von Indexeinträgen am Ende eines Indexes verwendet werden. Das Ende der Index ist die Indexeintrag, der gefunden wird, wenn zum letzten Datensatz im betreffenden Index zu verschieben. Das Ende der Index ist nicht identisch mit high-End des Indexes, die abhängig von der Sortierreihenfolge der Schlüsselspalten im Index ändern können.

Wenn diese Option in Kombination mit JET_bitSubStrLimit angegeben ist, und die aktuelle Schlüsselspalte eine Textspalte ist, wird diese Option ignoriert. Dieses Verhalten ist vorgesehen, um den Typ der aktuellen Schlüsselspalte zu abgeleitet werden beim Erstellen des Schlüssels für die Suche zu ermöglichen.

Wenn Sie einen ähnlichen Search-Schlüssel für den Anfang eines Indexes erstellen möchten, sollte eine ähnliche JetMakeKey aufgerufen werden für die letzte Schlüsselspalte, die kein Platzhalter ist, jedoch ohne angegebene Platzhalter-Optionen. Die suchen-Taste befindet sich in einem geeigneten Zustand für eine solche Suche verwenden. Dies ist analog zur Verwendung von JET_bitFullColumnStartLimit, außer dass die suchen-Taste nicht ordnungsgemäß abgeschlossen ist, nach der Verwendung einer Option Platzhalter unverändert.

Diese Option ist veraltet für Windows XP und spätere Versionen, um diesem umständliche beheben semantische. JET_bitFullColumnStartLimit und JET_bitFullColumnEndLimit sollten nach Möglichkeit verwendet werden.

JET_bitSubStrLimit

Diese Option gibt an, dass die suchen-Taste erstellt werden soll, dass die aktuelle Schlüsselspalte als Präfix Platzhalter gilt und alle wichtigen Spalten, die nach der aktuellen Schlüsselspalte stehen Platzhalter werden berücksichtigt werden sollten. Dies bedeutet, dass die erstellte suchen-Taste verwendet werden kann, um Indexeinträge übereinstimmen, die über Folgendes verfügen:

  • Die genaue Spaltenwerte für alle vorherigen Schlüsselspalten bereitgestellt.

  • Die angegebene Spaltendaten als Präfix ihre Spaltenwert für die aktuelle Schlüsselspalte.

  • Alle Spaltenwerte für nachfolgende Schlüsselspalten.

Diese Option sollte beim Platzhalter Suche Schlüssel erstellen von verwendet werden, zum Suchen von Indexeinträgen am Ende eines Indexes verwendet werden. Das Ende der Index ist die Indexeintrag, der gefunden wird, wenn zum letzten Datensatz im betreffenden Index zu verschieben. Das Ende der Index ist nicht identisch mit high-End des Indexes, die abhängig von der Sortierreihenfolge der Schlüsselspalten im Index ändern können.

Wenn diese Option in Kombination mit JET_bitStrLimit angegeben ist, und die aktuelle Schlüsselspalte eine Textspalte ist, wird diese Option Vorrang. Diese Option wird ignoriert, wenn die aktuelle Schlüsselspalte keine Textspalte ist. Dieses Verhalten ist vorgesehen, um den Typ der aktuellen Schlüsselspalte zu abgeleitet werden beim Erstellen des Schlüssels für die Suche zu ermöglichen.

Wenn Sie einen ähnlichen Search-Schlüssel für den Anfang eines Indexes erstellen möchten, sollten ähnliche JetMakeKey aufgerufen werden für die Schlüsselspalte, die das Präfix Platzhalterzeichen werden soll, wobei jedoch, dass keine Platzhalter Optionen angegeben. Die suchen-Taste befindet sich in einem geeigneten Zustand für eine solche Suche verwenden. Dies ist analog zur Verwendung von JET_bitPartialColumnStartLimit, außer dass die suchen-Taste nicht ordnungsgemäß abgeschlossen ist, nach der Verwendung einer Option Platzhalter unverändert.

Diese Option ist veraltet für Windows XP und spätere Versionen, um diesem umständliche beheben semantische. JET_bitPartialColumnStartLimit und JET_bitPartialColumnEndLimit sollten Sie stattdessen nach Möglichkeit verwendet werden.

Return Value

Diese Funktion gibt den Datentyp JET_ERR mit einem der folgenden Rückgabecodes. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine-Fehlern und Fehler behandeln von Parametern.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errClientRequestToStopJetService

Es ist nicht möglich, den Vorgang abzuschließen, da alle Aktivitäten auf die Instanz der Sitzung zugeordnet aufgrund eines Aufrufs von JetStopServicebehoben ist.

JET_errIndexTuplesKeyTooSmall

Die bereitgestellten Spaltendaten war zu klein, um einen gültigen Product Key für den aktuellen Index erstellt werden, weil dieser Index ein Tupelindex ist und die minimale Tupel größer als die angegebene Column-Daten Betrug. Weitere Informationen zu Tupel Indizes finden Sie unter JetCreateIndex . Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden.

JET_errInstanceUnavailable

Es ist nicht möglich, den Vorgang abzuschließen, da die Instanz der Sitzung zugeordnet ein schwerwiegender Fehler, der erforderlich sind aufgetreten wurde, dass der Zugriff auf alle Daten gesperrt werden, um die Integrität der Daten zu schützen. Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden.

JET_errInvalidBufferSize

Die Spalte Angaben entsprach nicht durch die Spaltendefinition erforderlich. Dies kann vorkommen, wenn die Spalte Datentyp systemintern eine bestimmte Größe ist. Dies kann auch auftreten, wenn der Spalte Datentyp nicht systemintern eine bestimmte Größe ist, aber der Definition der Spalte deklariert werden mit fester Länge. Eine Ausnahme ist, dass dieser Fehler nicht ausgeführt wird, wenn zu wenig Daten für eine feste Länge Textspalte bereitgestellt werden, da alle fehlenden Daten werden automatisch mit Leerzeichen aufgefüllt werden. Eine zweite Ausnahme ist, dass dieser Fehler nicht ausgeführt wird, wenn zu wenig Daten für eine feste Länge binäre Spalte bereitgestellt werden, da Nullen mit fehlenden Daten aufgefüllt werden.

JET_errInvalidgrbit

Eine der Optionen angefordert ungültig in eine unzulässige Weise verwendet oder nicht implementiert. Dies kann vorkommen, für JetMakeKey wenn:

  • JET_bitPartialColumnStartLimit oder JET_bitPartialColumnEndLimit angegeben sind und die entsprechende Schlüsselspalte ist keine Textspalte und ist keine binäre Spalte variabler Länge. In diesem Fall tritt nur unter Windows XP und spätere Versionen.

  • Es wird versucht, mehr als eine der folgenden Optionen nicht zusammen verwenden: JET_bitPartialColumnStartLimit, JET_bitPartialColumnEndLimit, JET_bitFullColumnStartLimit und JET_bitFullColumnEndLimit. In diesem Fall tritt nur unter Windows XP und spätere Versionen.

  • Es wird versucht, JET_bitStrLimit oder JET_bitSubStrLimit verwenden, wenn eine der folgenden Optionen verwendet wird: JET_bitPartialColumnStartLimit, JET_bitPartialColumnEndLimit, JET_bitFullColumnStartLimit und JET_bitFullColumnEndLimit. In diesem Fall tritt nur unter Windows XP und spätere Versionen.

JET_errInvalidParameter

Einer der bereitgestellten Parameter einen unerwarteten Wert oder oder enthalten ein Werts, das nicht mit dem Wert eines anderen Parameters kombiniert keinen Sinn.

Dies kann für JetMakeKey auftreten, wenn JET_bitNormalizedKey angegeben wurde und der im Puffer angegebene Wert zu groß war, um einen gültigen Search-Schlüssel werden.

JET_errKeyIsMade

Die Spaltendaten zur Verfügung gestellt, JetMakeKey wurde abgelehnt, weil Spaltendaten für die Schlüsselspalten im aktuellen Index bereits bereitgestellt wurde. Dies kann auf drei Arten auftreten. Die erste Möglichkeit ist, wenn Spaltendaten für jede Schlüsselspalte im aktuellen Index bereitgestellt werden. Die zweite Möglichkeit ist, wenn Spaltendaten für mindestens eine Schlüsselspalte bereitgestellt wurde und eine Option Platzhalter für den letzten Aufruf ausgewählt wurde. Die dritte Möglichkeit ist, wenn ein zuvor erstellte Search-Schlüssel mit JET_bitNormalizedKey, die alle Schlüsselspalten abdeckt bereitgestellt wurde.

JET_errKeyNotMade

Es ist kein aktuelle Suche-Schlüssel für den Cursor. Für JetMakeKey geschieht, wenn JET_bitNewKey nicht angegeben wird und ein Search-Schlüssel ist nicht für diesen Cursor mit einem vorherigen Aufruf von JetMakeKeyerstellt wurden. Die suchen-Taste wird durch einen vorherigen Aufruf einer beliebigen Navigations-API für den Cursor als JetMovegelöscht werden.

JET_errNoCurrentIndex

Es ist kein aktueller Index für den Cursor. Für JetMakeKey geschieht, wenn der Mauszeiger für den gruppierten Index einer Tabelle wird, einer Primärindex nicht definiert wurde und JET_bitNormalizedKey nicht angegeben wurde. Es ist nicht möglich, einen Schlüssel für die Suche zu erstellen, wenn der Mauszeiger auf einem Index wird, die keine Schlüsselspalten vorhanden ist, es sei denn, ein zuvor erstellte Search-Schlüssel bereitgestellt wird.

JET_errNotInitialized

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

JET_errRestoreInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da ein Restore-Vorgang in Arbeit auf die Instanz der Sitzung zugeordnet ist.

JET_errSessionSharingViolation

Die gleiche Sitzung kann nicht für mehrere Threads gleichzeitig verwendet werden. Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden.

JET_errTermInProgress

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

Klicken Sie auf Erfolg JET_bitNormalizedKey und JET_bitNewKey nicht angegeben wurden, wird die suchen-Taste durch die Suchkriterien für eine weitere Schlüsselspalte im aktuellen Index erstellt wurden. Wenn JET_bitNormalizedKey nicht angegeben wurde und JET_bitNewKey angegeben wurde, wird eine beliebige Taste, bereits vorhandenen Suche wurde verworfen, und eine neue wird erstellt wurden Sie durch die Suchkriterien für die erste Schlüsselspalte im aktuellen Index. Wenn JET_bitNormalizedKey angegeben wurde, eine beliebige Taste, bereits vorhandenen Suche wurde verworfen, und eine neue aus dem Puffer geladen. In jedem Fall treten keine Änderungen an den Zustand der Datenbank.

Wenn JET_bitNormalizedKey oder JET_bitNewKey angegeben wurde, ist der Zustand des Schlüssels Suche bei einem Fehler nicht definiert. Wenn weder JET_bitNormalizedKey noch JET_bitNewKey angegeben wurden, treten keine Änderungen auf den Status des Schlüssels suchen. In jedem Fall treten keine Änderungen an den Zustand der Datenbank.

Anmerkungen

Schlüssel sollte als undurchsichtiger Datenblöcke behandelt werden. Nicht versucht sollte die interne Struktur dieser Daten zu nutzen. Jedoch ist die folgenden Informationen zu allen ESENT Schlüsseln bekannt:

  • Verwenden von Memcmp zum Einrichten ihrer relative Reihenfolge in den ursprünglichen Index über die Tabelle, der die Quelle Indexeinträge gegeneinander möglicherweise Schlüssel verglichen werden.

  • Es ist keine Bedeutung Schlüssel der Indexeinträge aus verschiedenen Indizes miteinander verglichen.

  • Ein Schlüssel ist immer kleiner oder gleich JET_cbKeyMost (255) Bytes Länge vor Windows Vista. Unter Windows Vista und spätere Versionen können Schlüssel größer sein. Die maximale Größe eines Schlüssels ist der aktuelle Wert des JET_paramKeyMost gleich.

Suche Schlüssel können ein Byte länger sein, wenn eine Platzhalter-Option verwendet wurde. In diesem Fall werden die suchen-Taste bis zu JET_cbLimitKeyMost (256) Bytes für Versionen vor Windows Vista und JET_paramKeyMost + 1 Byte für Windows Vista und spätere Versionen.

Es ist eine sehr wichtig Auswirkung auf diese wichtigen maximale Größe. Bei jeder ein Indexeintrag mit Spaltenwerte, die dazu führen, dass einen Schlüssel generiert werden soll, für den betreffenden Index, die andernfalls diese maximale Größe überschreitet wären groß genug sind, wird dieser Schlüssel automatisch die maximale Größe abgeschnitten. Dies bewirkt, dass zwei Auswirkungen:

  • Für Einträge in einem eindeutigen Index verursacht diese Einträge, die andernfalls eindeutige als Duplikate deklariert werden.

  • Für die Einträge in allen Indizes verursacht wichtige Abschneiden Indexeinträge, die die Suchkriterien eines Schlüssels bestimmte Suche als Übereinstimmungen deklariert werden, andernfalls nicht entsprechen würde.

Anwendungen müssen das Abschneiden vorhersehen und entweder nicht verwendet werden oder die Auswirkungen auszugleichen. In Windows Vista wurde ein neues Index-Kennzeichen, JET_bitIndexDisallowTruncation, für die wichtigsten abgeschnittenen Daten zu verhindern, dass Anwendungen erleichtern hinzugefügt. Finden Sie unter der Struktur JET_INDEXCREATE für Weitere Informationen auf diese Option indizieren.

Voraussetzungen

-Client,

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server benötigt.

Kopfzeile

In Esent.h deklariert.

Library

Verwenden Sie ESENT.lib.

DLL

Erfordert "ESENT.dll".

Siehe auch

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetCreateIndex
JetRetrieveKey
wurde
JetSetIndexRange