Freigeben über


JetEnumerateColumns-Funktion

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JetEnumerateColumns-Funktion

Die Funktion JetEnumerateColumns ruft effizient eine Reihe von Spalten und deren Werte aus den Kopierpuffer, Cursortyp oder des aktuellen Datensatzes eines Cursors. Die Spalten und Werte abgerufen können durch eine Liste mit Spalten-IDs, ItagSequence Zahlen und andere Merkmale eingeschränkt werden. Diese Spalte Retrieval API ist insofern in dynamisch reservierter Speicher Informationen zurückgegeben, die vom Benutzer bereitgestellte Realloc kompatibel ihrerseits mit abgerufen. Diese neue Flexibilität ermöglicht das effiziente Abrufen von Spaltendaten mit bestimmten Eigenschaften (wie Größe und Multiplizität), die der Anrufer nicht bekannt sind. Dadurch entfällt die Notwendigkeit für die Verwendung der Ermittlung Modi der JetRetrieveColumn dieser Merkmale bestimmen, um einen letzten Aufruf von JetRetrieveColumn einrichten, die erfolgreich die gewünschten Daten abruft.

Windows XP:JetEnumerateColumns wird in Windows XP eingeführt.

JET_ERR JET_API JetEnumerateColumns(
  __in          JET_SESID sesid,
  __in          JET_TABLEID tableid,
  __in          unsigned long cEnumColumnId,
  __in_opt      JET_ENUMCOLUMNID* rgEnumColumnId,
  __out         unsigned long* pcEnumColumn,
  __out         JET_ENUMCOLUMN** prgEnumColumn,
  __in          JET_PFNREALLOC pfnRealloc,
  __in          void* pvReallocContext,
  __in          unsigned long cbDataMost,
  __in          JET_GRBIT grbit
);

Parameter

sesid

Die Sitzung für diesen Aufruf verwenden.

TableID

Der Mauszeiger für dieses Anrufs verwenden.

cEnumColumnId

Ein Array von Spalten-IDs, jeweils mit ein optionales Array von ItagSequence Zahlen aufgelistet werden.

Wenn cEnumColumnId 0 (null) ist, und klicken Sie dann RgEnumColumnId ignoriert wird, und alle Spaltenwerte aufgelistet sind, und an den Aufrufer zurückgegeben. Wenn ein Element des Arrays ID Spalte eine Spalte ID bezieht sich 0 (null), klicken Sie dann Enumeration dieser Spalte übersprungen, und mit dem Status Spalte JET_wrnColumnSkipped ein entsprechender Steckplatz in der Ausgabe generiert werden.

Wenn CtagSequence 0 (null) für ein angegebenes Element des Arrays ID Spalte ist dann RgtagSequence ignoriert, und alle Spaltenwerte für diese Spalte ID aufgelistet sind, und an den Aufrufer zurückgegeben. Wenn ein Element von Array ItagSequence auf eine Zahl ItagSequence bezieht 0 (null), klicken Sie dann die Enumeration dieser Zahl ItagSequence übersprungen, und ein entsprechender Steckplatz in der Ausgabe generiert werden, mit dem Wert Spalte Status JET_wrnColumnSkipped.

rgEnumColumnId

Finden Sie unter cEnumColumnId.

pcEnumColumn

Das enumerierte Array von Spalten und deren Werte zurückgegeben im Arbeitsspeicher, die über den bereitgestellten ItagSequence kompatibel Rückruf zugewiesenen.

Wenn ein Array von Spalten-IDs bei der Eingabe angefordert wird dann spiegeln die Reihenfolge und die Größe des Arrays Ausgabe die Reihenfolge und die Größe des Arrays input. Auf ähnliche Weise, wenn ein Array von Zahlen ItagSequence nach einer bestimmten Spalte ID bei der Eingabe angefordert wird dann die Reihenfolge und die Größe des Arrays Ausgabe von Spaltenwerte für die Spalte die Reihenfolge und die Größe des Arrays input spiegeln.

Die Ausgabeparameter werden auf 0 (null) festgelegt und NULL auf etwaige Fehler außer JET_errBadColumnId und JET_errColumnNotFound. Wenn diese Fehler zurückgegeben werden, ist die Ausgabedaten gültig und für alle außer den betroffenen Spalten-IDs abgeschlossen. Für jede der betroffenen Spalten-IDs der Statuscode ist auf einer dieser Fehler festgelegt, sodass dem Anrufer kann bestimmen, welche Spalten-IDs fehlerhafte wurden und potenziell Korrekturmaßnahmen.

prgEnumColumn

Finden Sie unter PcEnumColumn.

pfnRealloc

Identifiziert Realloc kompatibel ihrerseits und eine optionale Kontext Zeiger Speicher für das Ausgabearray der Spalten und deren Werte zuweisen.

pvReallocContext

Finden Sie unter PfnRealloc.

cbDataMost

Legt eine Cap auf die Menge der Daten aus einer langer Text oder long binary-Spalte zurückgegeben.

Dieser Parameter kann verwendet werden, um eine Enumeration von einer sehr großen Spaltenwert zu verhindern. Normalerweise kann eine-Enumeration, den API-Aufruf mit JET_errOutOfMemory fehlschlagen. Wenn ein große Spaltenwert, auf diese Weise abgeschnitten wird wird der Wert der Spalte Status JET_wrnColumnTruncated.

JET_errInvalidGrbit

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

Wert

Bedeutung

JET_bitEnumerateCompressOutput

Aufzählen Spaltenwerte haben alle Spalten, die für die wir alle Werte, die und Abrufen nur ein nicht-NULL-Wert in einem komprimierten Format zurückgegeben werden kann. Der Status für solche Spalten wird JET_wrnColumnSingleValue und die Größe der Spaltenwert festgelegt werden, und der Speicher mit dem Spaltenwert wird direkt in der Struktur JET_ENUMCOLUMN zurückgegeben werden. Es ist nicht sichergestellt, dass alle in Frage kommenden Spalten auf diese Weise komprimiert werden. Weitere Informationen finden Sie unter JET_ENUMCOLUMN .

JET_bitEnumerateCopy

Diese Option gibt an, dass die geänderte Spaltenwerte des Datensatzes anstelle der ursprünglichen Spaltenwerte aufgelistet werden sollen. Wenn ein Spaltenwert nicht geändert wurde, wird der ursprüngliche Wert von Column aufgelistet. Auf diese Weise kann ein Wert von Column, der noch nicht eingefügt oder aktualisiert beim Einfügen oder Aktualisieren eines Datensatzes aufgelistet werden.

Diese Option ist identisch mit JET_bitRetrieveCopy mit JetRetrieveColumn oder JetRetrieveColumns.

JET_bitEnumerateIgnoreDefault

Wenn eine bestimmte Spalte nicht im Datensatz vorhanden ist, wird kein Spaltenwert zurückgegeben. Normalerweise würde der Standardwert für die Spalte, sofern zutreffend, in diesem Fall zurückgegeben werden. Es ist sichergestellt, dass, wenn die Spalte auf einen anderen Wert als den Standardwert festgelegt ist dann diese andere Wert zurückgegeben werden (d. h., wenn eine Spalte mit einem Standardwert explizit auf NULL festgelegt ist, und klicken Sie dann als Wert für diese Spalte NULL zurückgegeben werden). Beachten Sie, dass auch wenn diese Option angefordert wird, weiterhin die Möglichkeit ist, einen Spaltenwert angezeigt, der der Standardwert gleich ist. Kein Versuch wird unternommen, um Spaltenwerte zu entfernen, die mit ihren Standardwerten übereinstimmen.

Es ist wichtig, beachten Sie, dass diese Option wirkt sich auf die Ausgabe des JetEnumerateColumns mit JET_bitEnumeratePresenceOnly oder JET_bitEnumerateTaggedOnly.

JET_bitEnumerateIgnoreUserDefinedDefault

Wenn eine bestimmte Spalte nicht im Datensatz vorhanden ist und es einen Standardwert von benutzerdefinierten wurde werden keine Spaltenwert zurückgegeben werden. Diese Option verhindert den Rückruf, der den benutzerdefinierte Standardwert für diese Spalte aus aufgerufen wird, wenn die Werte für diese Spalte Aufzählen von berechnet.

WindowsServer 2003 und früheren:Für Windows Server 2003 und früheren Versionen wird der Vorgang mit JET_errCallbackFailed fehl.

Windows Server 2003 SP1:Diese Option ist nur für Windows Server 2003 SP1 und höher verfügbar. Wenn dieser Wert angegeben ist und die Tabelle enthält eine Spalte, die hat benutzerdefinierten einen Standardwert, und klicken Sie dann der Vorgang mit JET_errCallbackFailed schlägt fehl.

JET_bitEnumeratePresenceOnly

Ein Wert ungleich NULL für die angeforderte Spalte oder einen Wert von Column vorhanden ist die zugeordneten Daten nicht zurückgegeben. In diesem Fall wird der zugeordnete Status für diese Spalte oder einen Wert von Column auf JET_wrnColumnPresent festgelegt sein. Wenn die Spalte oder Spaltenwert NULL ist werden wie gewohnt JET_wrnColumnNull zurückgegeben.

JET_bitEnumerateTaggedOnly

Aufzählen aller Spaltenwerte im Datensatz (z. B., die bei cEnumColumnId gleich null ist), werden nur die markierte Spaltenwerte zurückgegeben. Diese Option ist nicht zulässig, beim Aufzählen von einem bestimmten Spalten-IDs-Array.

JET_bitEnumerateInRecordOnly

Windows 7:JET_bitEnumerateInRecordOnly ist in Windows 7 eingeführt.

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_errBadColumnId

Die Spalten-ID angegeben wird, außerhalb der zulässigen Grenzen einer Spalte-ID. Dieser Fehler wird durch JetEnumerateColumns zurückgegeben werden, wenn bestimmte Spalten-Ids angefordert wurden, eine der diese Spalte Ids ungültig war, und die erste Spalte ungültige ID konnte nicht mit dieser Fehler für die Spalte Statuscode.

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_errColumnNotFound

Durch die angegebene Spalte ID beschriebene Spalte ist in der Tabelle nicht vorhanden. Dieser Fehler wird durch JetEnumerateColumns zurückgegeben werden, wenn bestimmte Spalten-IDs angefordert wurden, eine der diese Spalte IDs ungültig war, und die erste Spalte ungültige ID konnte nicht mit dieser Fehler für die Spalte Statuscode.

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.

Windows XP:Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden.

JET_errInvalidgrbit

Eine der Optionen angefordert war ungültig oder nicht implementiert. Dieser Fehler wird zurückgegeben werden, indem JetEnumerateColumns wenn:

  • JET_bitEnumerateLocal wird angegeben.

  • Eine ungültige JET_errInvalidGrbit wird angegeben.

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. Dieser Fehler wird zurückgegeben werden, indem JetEnumerateColumns wenn:

  • PcEnumColumn ist NULL.

  • PrgEnumColumn ist NULL.

  • PfnRealloc ist NULL.

JET_errNoCurrentRecord

Der Cursor befindet sich nicht auf einen Datensatz. Dies kann vielen verschiedenen Gründen auftreten. Beispielsweise dies geschieht, wenn der Cursor derzeit nach dem letzten Datensatz auf dem aktuellen Index befindet.

JET_errNotInitialized

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

JET_errRecordDeleted

Der Cursor befindet sich für einen Datensatz, der gelöscht wurde. Dies kann vielen verschiedenen Gründen auftreten. Die häufigste Ursache ist, dass die Sitzung nicht in einer Transaktion ist, der Cursor wurde für einen Datensatz, dass der Datensatz gelöscht wurde, und klicken Sie dann der Cursor haben versucht, auf diesem Datensatz zu verweisen.

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.

Windows XP: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 werden die angeforderten Daten in den Ausgabepuffer zurückgegeben. Es ist der Anrufer Verantwortung zur Freigabe von Speicher, die von diesem Rückruf zugeordnet und in den Ausgabepuffer zurückgegeben. Dieser Speicher sollte durch den bereitgestellten Realloc kompatibel Rückruf freigegeben werden. Keine Änderung an den Zustand der Datenbank erfolgt.

Bei einem Fehler werden keine der angeforderten Daten zurückgegeben. Speicher, der während des Anrufs zugewiesen wurde, wird automatisch mithilfe des bereitgestellten Realloc kompatibel Rückrufs freigegeben werden. Keine Änderung an den Zustand der Datenbank erfolgt.

Anmerkungen

Wenn Sie alle Spaltenwerte im Datensatz aufzählen werden und Sie haben keinen JET_bitEnumerateIgnoreDefaults können nicht Sie davon ausgehen, dass Sie nie eine Spalte oder einen Spaltenwert mit Statuscode JET_wrnColumnNull angezeigt werden. Sie können diesen Statuscode sehen, wenn eine Spalte ein Standardwert und explizit auf NULL festgelegt wurde oder wenn die Spalte eine nicht wenige Spalte (beispielsweise eine Spalte feste oder Variable) ist.

Der Parameter CbDataMost gilt nicht für alle Spaltenwerte. Dieser Parameter wird nur kürzen langer Text und long binary Spaltenwerte, die so groß sind, dass sie aus dem Datensatz separat gespeichert wurden.

Wenn JetEnumerateColumns Daten in ihre Ausgabeparameter zurückgibt, ist der Aufrufer verantwortlich für das Freigeben von Speicher im Array sowie alle Speicher von Zeigern eingebettet im Array bezeichnet.

Voraussetzungen

-Client,

Erfordert Windows Vista oder Windows XP.

Server

Erfordert WindowsServer 2008 oder WindowsServer 2003.

Kopfzeile

In Esent.h deklariert.

Library

Verwenden Sie ESENT.lib.

DLL

Erfordert "ESENT.dll".

Siehe auch

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_ENUMCOLUMNID
JET_ENUMCOLUMN
JET_ENUMCOLUMNVALUE
JET_PFNREALLOC
Realloc
JetRetrieveColumn
JetRetrieveColumns