Share via


SEEK-Befehl

Durchsucht eine Tabelle nach dem ersten Datensatz, dessen Indexschlüssel einem allgemeinen Ausdruck entspricht, und verschiebt den Datensatzzeiger auf den Datensatz.

SEEK eExpression   [ORDER nIndexNumber | IDXIndexFileName
    | [TAG] TagName [OF CDXFileName]    [ASCENDING | DESCENDING]]
   [IN nWorkArea | cTableAlias]

Parameter

  • eExpression
    Gibt den Indexschlüssel an, nach dem SEEK suchen soll. eExpression kann auch gleich NULL sein.

  • ORDER nIndexNumber
    Gibt die Nummer der Indexdatei oder den Indexnamen an, der für die Suche nach dem Indexschlüsselwert verwendet werden soll. nIndexNumber bezieht sich auf die Indexdateien entsprechend der Reihenfolge in USE oder SET INDEX. Geöffnete IDX-Dateien werden zunächst in der Reihenfolge nummeriert, in der sie in USE oder SET INDEX angezeigt werden. Danach werden Indexnamen in der strukturierten CDX-Datei (falls vorhanden) in der Reihenfolge nummeriert, in der sie erstellt wurden. Zum Schluss werden die Indexnamen in allen offenen unabhängigen CDX-Dateien in der Reihenfolge ihrer Erstellung nummeriert. Weitere Informationen über die Indexnummerierung finden Sie unter "SET ORDER".

  • ORDER IDXIndexFileName
    Gibt die IDX-Datei an, die für die Suche nach dem Indexschlüssel verwendet werden soll.

  • ORDER [TAG] TagName [OF CDXFileName]
    Gibt den Indexnamen einer CDX-Datei an, die für die Suche nach dem Indexschlüssel verwendet wird. Der Indexname kann aus einer strukturierten CDX-Datei oder aus einer geöffneten unabhängigen CDX-Datei stammen.

    Wenn identische Indexamen in geöffneten unabhängigen CDX-Dateien vorhanden sind, verwenden Sie OF CDXFileName, um die CDX-Datei anzugeben, in der sich der Indexname befindet.

    Anmerkung   Bei Namensübereinstimmungen zwischen IDX-Dateien und Indexnamen hat die IDX-Datei Vorrang.

  • ASCENDING
    Gibt an, dass die Tabelle in aufsteigender Reihenfolge durchsucht wird.

  • DESCENDING
    Gibt an, dass die Tabelle in absteigender Reihenfolge durchsucht wird.

  • IN nWorkArea
    Gibt die Arbeitsbereichnummer der zu durchsuchenden Tabelle an.

  • IN cTableAlias
    Gibt den Alias der durchsuchten Tabelle an.

    Ohne Angabe von IN nWorkArea und IN cTableAlias wird die Tabelle im derzeit ausgewählten Arbeitsbereich durchsucht.

Hinweise

Sie können SEEK nur mit indizierten Tabellen verwenden, und die Suche basiert ausschließlich auf dem Indexschlüssel. Es muss eine genaue Übereinstimmung vorliegen, es sei denn, dass SET EXACT auf OFF gesetzt wurde.

Wenn SEEK einen Datensatz mit einem übereinstimmenden Indexschlüssel findet, gibt RECNO( ) die Datensatznummer dieses Datensatzes zurück. FOUND( ) gibt Wahr (.T.) zurück, und EOF( ) gibt Falsch (.F.) zurück.

Wird kein übereinstimmender Schlüssel gefunden, gibt RECNO( ) die Anzahl der Datensätze plus 1 zurück, FOUND( ) gibt Falsch (.F.) zurück, und EOF( ) gibt Wahr (.T.) zurück.

Wenn SET NEAR aktiviert ist, wird der Datensatzzeiger unmittelbar hinter dem Datensatz mit dem am ehesten übereinstimmenden Indexschlüssel positioniert. Ist SET NEAR deaktiviert, wird der Datensatzzeiger an das Dateiende gesetzt. In beiden Fällen gibt RECNO( ) die Datensatznummer des am ehesten übereinstimmenden Datensatzes zurück.

Beispiel

Im folgenden Beispiel wird die Tabelle customer geöffnet und nach dem Feld company indiziert. Mit SEEK wird nach dem Indexschlüsselausdruck gesucht, der mit dem in der Variablen gcSeekVal angegebenen Wert übereinstimmt.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer ORDER company  && Opens Customer table

SET EXACT OFF
STORE 'B' TO gcSeekVal
SEEK gcSeekVal

IF FOUND( )
   DISPLAY FIELDS company, contact
ENDIF

Siehe auch

EOF( )-Funktion | FOUND( )-Funktion | INDEX-Befehl | INDEXSEEK( )-Funktion | LOCATE-Befehl | RECNO( )-Funktion | SEEK( )-Funktion | SET EXACT-Befehl | SET NEAR-Befehl