JetIndexRecordCount-Funktion
Gilt für: Windows | Windows Server
JetIndexRecordCount-Funktion
Die JetIndexRecordCount-Funktion zählt die Anzahl der Einträge im aktuellen Index von der aktuellen Position nach vorne. Die aktuelle Position ist in der Anzahl enthalten. Die Anzahl kann größer als die Gesamtzahl der Datensätze in der Tabelle sein, wenn der aktuelle Index über einer mehrwertigen Spalte liegt und Instanzen der Spalte über mehrere Werte verfügen. Wenn die Tabelle leer ist, wird für die Anzahl 0 zurückgegeben.
JET_ERR JET_API JetIndexRecordCount(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out unsigned long* pcrec,
__in unsigned long crecMax
);
Parameter
sesid
Die Sitzung, die für diesen Aufruf verwendet werden soll.
tableid
Der Cursor, der für diesen Aufruf verwendet werden soll.
pcrec
Der Zeiger auf einen wert ohne Vorzeichen long, um die Anzahl zu empfangen.
crecMax
Die maximale Anzahl von Datensätzen, die gezählt werden sollen. Der crecMax-Wert 0 gibt an, dass die Anzahl unbegrenzt 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_errClientRequestToStopJetService |
Der Vorgang kann nicht abgeschlossen werden, da alle Aktivitäten auf dem instance, die der Sitzung zugeordnet sind, aufgrund eines Aufrufs von JetStopService beendet wurde. |
JET_errInstanceUnavailable |
Der Vorgang kann nicht abgeschlossen werden, da bei der instance, die 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. Windows XP: Dieser Rückgabewert wird in Windows XP eingeführt. |
JET_errNoCurrentRecord |
Der Cursor befindet sich derzeit nicht in einem Datensatz, und die Tabelle ist nicht leer. Windows XP, Windows Server 2003, Windows 2000 Server und Windows 2000 Professional: Wenn der Cursor in einem leeren Index oder Indexbereich positioniert ist, gibt JetIndexRecordCount fälschlicherweise JET_errNoCurrentRecord zurück. |
JET_errNotInitialized |
Der Vorgang kann nicht abgeschlossen werden, da die instance, die der Sitzung zugeordnet ist, noch nicht initialisiert wurde. |
JET_errRestoreInProgress |
Der Vorgang kann nicht abgeschlossen werden, da ein Wiederherstellungsvorgang für die instance ausgeführt wird, die der Sitzung zugeordnet ist. |
JET_errSessionSharingViolation |
Dieselbe Sitzung kann nicht für mehrere Threads gleichzeitig verwendet werden. Windows XP: Dieser Rückgabewert wird in Windows XP eingeführt. |
JET_errTermInProgress |
Der Vorgang kann nicht abgeschlossen werden, da die instance, die der Sitzung zugeordnet ist, heruntergefahren wird. |
Wenn diese Funktion erfolgreich ist, wird die genaue Anzahl der Indexeinträge einschließlich der aktuellen Position und bis zu crecMax (wenn sie nicht 0 ist) in der unsignierten long-Eigenschaft zurückgegeben, auf die von pcrec verwiesen wird.
Wenn diese Funktion fehlschlägt, werden keine Änderungen am Arbeitsspeicher vorgenommen, der bei Denkvorgängen zugeordnet ist.
Bemerkungen
Wenn die Tabelle nicht leer ist, sollte der Cursor auf dem Datensatz positioniert werden, von dem aus die Zählung beginnen soll. Die Anzahl enthält diesen Datensatz und die Anzahl bis zum angegebenen Grenzwert in crecMax. Wenn crecMax 0 ist, wird der Vorgang bis zum Ende des Indexes weitergezählt.
Indexbereiche können verwendet werden, um künstliche End-of-Index-Einschränkungen für die Anzahl zu erstellen. Auf diese Weise können Unterbereiche eines Indexes genau gezählt werden. Der Cursor sollte in der ersten Zeile im Bereich positioniert werden. Das Ende des Bereichsschlüssels sollte festgelegt werden, und dann sollte JetSetIndexRange verwendet werden, um den oberen Bereich festzulegen, entweder inklusiv oder exklusiv. Schließlich sollte JetIndexRecordCount aufgerufen werden, um den Bereich genau zu zählen.
JetIndexRecordCount gehorcht der Transaktionssemantik und gibt eine Anzahl zurück, die für diese bestimmte Sitzung im aktuellen Transaktionszustand genau ist.
JetIndexRecordCount greift auf Indexblattseiten zu, um Einträge genau zu zählen. Daher kann es sehr viele E/A-Vorgänge ausführen und langsam sein. Die CrecMax-Einschränkung sollte verwendet werden, um übermäßige Belastung zu verhindern. Wenn ein Bereich groß ist, kann es möglich sein, den Bereich mit JetGetRecordPosition in einer ungefähren Weise zu zählen.
Windows XP, Windows Server 2003, Windows 2000 Server und Windows 2000 Professional: Wenn der Cursor in einem leeren Index- oder Indexbereich positioniert ist, gibt JetIndexRecordCount fälschlicherweise JET_errNoCurrentRecord zurück, anstatt eine Datensatzanzahl von 0 zurückzugeben. Die Anwendung sollte überprüfen, ob der Index oder Indexbereich in diesem Fall leer ist.
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. |
Weitere Informationen
JET_ERR
JET_SESID
JET_TABLEID
JetGetRecordPosition
JetSetIndexRange
JetStopService