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_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:
|
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