Der FoxPro-Kompatible Skriptinterpreter
🔎
Newsletter
Der FoxPro-Kompatible Skriptinterpreter

seek

Sucht nach einem Schlüssel in einem Index.

SEEK <Expression>

SEEK <Expression> [SAMEAFTER] [ASCENDINGDESCENDING] [PREFIXEXACT]

Mit der SEEK-Anweisung kann ein Datensatz anhand eines Schlüssels aufgesucht werden. Der Index muss zuvor mit der SET ORDER TO-Anweisung ausgewählt worden sein. Wenn die Suche erfolgreich war, zeigt die found-Funktion true an und der Datensatzzeiger zeigt auf den entsprechenden Datensatz. Wenn die Suche nicht erfolgreich war, wird das Verhalten durch die SET NEAR-Einstellung festgelegt. Wenn SET NEAR auf OFF festgelegt ist, wird der Datensatzzeiger, nach einer erfolglosen Suche, am Dateiende positioniert. Wenn SET NEAR auf ON festgelegt ist, zeigt der Datensatzzeiger auf den Datensatz bei dem die Suche abgebrochen wurde.

Parameter Expression

Gibt den Schlüssel an nach dem gesucht werden soll.

Parameter SAME, AFTER

Mit diesen Parametern kann gesteuert werden ob genau ein bestimmter Schlüssel oder ein Datensatz hinter einem bestimmten Schlüssel gesucht werden soll. Mögliche Kombinationen sind SAME (=) AFTER (>) SAME AFTER (>=) bei aufsteigender Suche, oder SAME (=) AFTER (<) SAME AFTER (<=) bei absteigender Suche. Die Standardoption ist SAME.

Parameter ASCENDING, DESCENDING

Mit diesem Parameter kann explizit die Richtung festgelegt werden in welcher der Index durchsucht werden soll. So lässt sich zum Beispiel der erste oder der letzte Datensatz zu einem bestimmten Schlüssel ausfindig machen, falls der gleiche Schlüssel mehrfach vorkommt. Bei gleichen Schlüsseln sind die Datensätze zusätzlich anhand ihrer Datensatznummer im Index sortiert. Die Standardoption kann durch unterschiedliche Faktoren beeinflusst werden:

Sortierung festgelegt durch SET ORDER TO

Wenn die SET ORDER TO Anweisung mit einer expliziten Suchreihenfolge ausgeführt wurde, wird diese Suchreihenfolge für alle Suchbefehle standardmäßig verwendet.

Standardsuchreihenfolge festgelegt durch INDEX ON

Wenn beim Erstellen des Index eine Standardsuchreihenfolge angegeben wurde, wird diese Einstellung standardmäßig berücksichtigt.

Parameter PREFIX, EXACT

Mit diesem Parameter kann gesteuert werden ob eine Präfixsuche oder eine genaue Suche durchgeführt werden soll. Diese Einstellung hat nur einen Effekt wenn nach Zeichenketten gesucht wird. Wenn nach der Zeichenkette ABC gesucht wird, möchte man entweder Datensätze finden die mit den Zeichen ABC anfangen, aber zum Beispiel auch die Zeichenketten ABC|D oder ABC|DE (Präfixsuche). Oder man möchte nur Datensätze finden, in denen der Schlüssel genau ABC ist (Exakte Suche). Die Standardeinstellung wird mit der SET EXACT-Option festgelegt.

Berücksichtigung von Filtern

Die SEEK-Anweisung berücksichtigt Filter, die mit der SET FILTER TO-Anweisung auf dem Arbeitsbereich festgelegt wurden.

Beispiele

Es folgen ein paar Beispiele zum Zeigen der unterschiedlichen Optionen der SEEK-Anweisung

Seek SAME oder AFTER mit unterschiedlichen Sortierreihenfolgen

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
* Erstelle eine temporäre Tabelle mit vier Schlüsseln um 
* die unterschiedlichen Suchmethoden zu zeigen
create table sample(key integer)
append blank
replace key with 1
append blank
replace key with 2
append blank
replace key with 2
append blank
replace key with 3
index on key tag key

* Suche den ersten Datensatz mit dem Schlüssel 2
seek 2
"seek 2"
"found"found(), "recno"recno(), "key", key

* Suche den letzten Datensatz mit dem Schlüssel 2
seek 2 descending
"seek 2 descending"
"found"found(), "recno"recno(), "key", key

* Suche den ersten Datensatz mit einem Schlüssel größer als 2
seek 2 after
"seek 2 after"
"found"found(), "recno"recno(), "key", key

* Suche den letzten Datensatz mit einem Schlüssel kleiner als 2
seek 2 after descending
"seek 2 descending after"
"found"found(), "recno"recno(), "key", key

seek 2
found true recno 2 key 2
seek 2 descending
found true recno 3 key 2
seek 2 after
found true recno 4 key 3
seek 2 descending after
found true recno 1 key 1