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