<< | Inhaltsverzeichnis | Suchen | >> |
Funktion
Syntax: |
SEARCH(<INDEXDATEI>,<SUCH-ART>,<SUCH-STRING>, |
Bedeutung: |
Die Funktion SEARCH führt eine Volltextsuche über die gesamte <INDEXDATEI> durch. Gesucht wird in den einzelnen Datensätzen nach <SUCH-STRING>. <SUCH-ART> legt fest, ob alle gefundenen oder alle nicht gefundenen Datensätze geliefert werden. Wenn <SUCH-STRING> gefunden wird und <SUCH-ART> ungleich 0 ist oder <SUCH-STRING> nicht gefunden wird und <SUCH-ART> gleich 0 ist, so wird der komplette Datensatz im Format RECORD$(<INDEXDATEI>) in die sequentielle Datei <DATEINAME> geschrieben. Bei <SUCH-ART> = 0 wird also die Komplementärmenge geliefert, das sind alle Datensätze, die <SUCH-STRING> nicht enthalten. Ist <RANDOM-DATEI> = 0 oder fehlt der Parameter <RANDOM-DATEI>, so wird eine sequentielle Datei erzeugt, in der die einzelnen Datensätze durch einen Zeilenvorchub CHR$(13)+CHR$(10) getrennt sind. Ist <RANDOM-DATEI> <> 0, so wird eine Random-Datei erzeugt, in der die gefundenen Datensätze ohne Zeilentrennung nacheinander abgespeichert werden. Dieser Dateityp ist dann sinnvoll, wenn in den Datensätzen Zeilenvorschübe (z.B. in Textdaten) vorkommen. Ist <MAX-ANZAHL> <> 0, so legt <MAX-ANZAHL> fest, wieviele Datensätze maximal gesucht werden sollen. Wird diese Anzahl erreicht, wird die Suche beendet. Ist <GROSS-KLEIN> <> 0, so wird bei der Suche zwischen Groß- und Kleinbuchstaben unterschieden, andernfalls nicht. Ist <NUR-ZAEHLEN> <> 0, so werden die gefundenen Datensätze nur gezählt und nicht in die Datei <DATEINAME> geschrieben. <DATEINAME> ist dann ohne Bedeutung. <DATEINAME> enthält den Namen der Datei, in die die gefundenen Datensätze geschrieben werden. Ist <DATEINAME> = "", so wird automatisch eine temporäre Datei erzeugt. Der Name dieser Datei steht nach dem Aufruf der Funktion SEARCH in der Variablen <DATEINAME>. <VON> und <BIS> legen den Bereich im Datensatz fest, in dem gesucht werden soll. Ist <VON> = 0 oder <BIS> < <VON> oder fehlen die Parameter <VON> und <BIS>, so wird im gesamten Datensatz gesucht. Unter Java werden beim Aufruf von SEARCH alle gesperrten Datensätze freigegeben. |
|
|
|
Achtung: Die temporären Dateien werden nicht automatisch gelöscht. Es ist Aufgabe der Programmierung, diese Dateien zu löschen. |
|
|
|
Ist <TRENNZEICHEN> <> "", so wird davon ausgegangen, daß in <SUCH-STRING> mehrere Zeichenfolgen enthalten sind, nach denen gesucht werden soll. Das 1. Zeichen von <TRENNZEICHEN> legt das Zeichen fest, das diese Zeichenfolgen trennt. <AND-OR> legt fest, ob alle Zeichenfolgen vorhanden sein müssen oder nur eine. Ist <AND-OR> = 1, so müssen alle Zeichenfolgen vorhanden sein (AND - Verknüpfung). Ist <AND-OR> <> 1, so muß nur eine der Zeichenfolgen vorhanden sein (OR - Verknüpfung). Ist <TRENNZEICHEN> = "", so hat <AND-OR> keine Bedeutung. SEARCH liefert als Ergebnis die Anzahl der gefundenen Datensätze. Im Fehlerfall liefert SEARCH als Ergebnis -1 und in den Variablen OK und OK2 den Fehlercode. Beim Aufruf von SEARCH werden alle gesperrten Datensätze in der <INDEXDATEI> freigegeben. |
|
|
|
Achtung: SEARCH sucht in der gesamten Zeichenfolge RECORD$ (<INDEXDATEI>) feldübergreifend nach <STRING-AUSDRUCK>. Gepackte Zahlen werden dabei nur als Zeichenkette und nicht als Zahlen interpretiert. |
|
|
|
SEARCH kann nur aufgerufen werden für EBUS-Indexdateien. Bei C-Isam-, Betrieve- und ODBC-Indexdateien wird der Fehler 1041,910 gemeldet. |
Beispiel: |
/* Alle Datensätze suchen, die Herr
enthalten /* Alle Datensätze suchen, die Herr nicht enthalten /* Alle Datensätze suchen, die Herr und Frau enthalten /* Alle Datensätze suchen, die Herr oder Frau enthalten /* Alle Datensätze suchen, die nicht Herr und Frau enthalten /* Alle Datensätze suchen, die weder Herr noch Frau enthalten |
siehe auch: |