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