<< Inhaltsverzeichnis Suchen >>

SEARCH

Funktion

Syntax:

SEARCH(<INDEXDATEI>,<SUCH-ART>,<SUCH-STRING>,
                  <MAX-ANZAHL>,<GROSS-KLEIN>,<NUR-ZAEHLEN>,
                  <DATEINAME>,<TRENNZEICHEN>,<AND-OR>
                  [,<RANDOM-DATEI>[,<VON>,<BIS>]])

<INDEXDATEI>               = <INDEXDATEI-NAME> oder
                                               <STRING-AUSDRUCK>
<SUCH-ART>                   = <NUM-AUSDRUCK>
<SUCH-STRING>            = <STRING-AUSDRUCK>
<MAX-ANZAHL>            = <NUM-AUSDRUCK>
<GROSS-KLEIN>            = <NUM-AUSDRUCK>
<NUR-ZAEHLEN>          = <NUM-AUSDRUCK>
<DATEINAME>                = <STRING-VARIABLE>
<TRENNZEICHEN>        = <STRING-AUSDRUCK>
<AND-OR>                       = <NUM-AUSDRUCK>
<RANDOM-DATEI>        = <NUM-AUSDRUCK>
<VON>                               = <NUM-AUSDRUCK>
<BIS>                                 = <NUM-AUSDRUCK>

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
DATEI$ = "HILF.DAT"
H% = SEARCH(KUNDEN,1,"Herr",0,0,0,DATEI$,"",0)
ERRORMES = STR$(H%) + " Datensätze gefunden"

/* Alle Datensätze suchen, die Herr nicht enthalten
DATEI$ = "HILF.DAT"
H% = SEARCH(KUNDEN,0,"Herr",0,0,0,DATEI$,"",0)
ERRORMES = STR$(H%) + " Datensätze gefunden"

/* Alle Datensätze suchen, die Herr und Frau enthalten
DATEI$ = "HILF.DAT"
H% = SEARCH(KUNDEN,1,"Herr;Frau",0,0,0,DATEI$,";",1)
ERRORMES = STR$(H%) + " Datensätze gefunden"

/* Alle Datensätze suchen, die Herr oder Frau enthalten
DATEI$ = "HILF.DAT"
H% = SEARCH(KUNDEN,1,"Herr;Frau",0,0,0,DATEI$,";",0)
ERRORMES = STR$(H%) + " Datensätze gefunden"

/* Alle Datensätze suchen, die nicht Herr und Frau enthalten
DATEI$ = "HILF.DAT"
H% = SEARCH(KUNDEN,0,"Herr;Frau",0,0,0,DATEI$,";",1)
ERRORMES = STR$(H%) + " Datensätze gefunden"

/* Alle Datensätze suchen, die weder Herr noch Frau enthalten
DATEI$ = "HILF.DAT"
H% = SEARCH(KUNDEN,0,"Herr;Frau",0,0,0,DATEI$,";",0)
ERRORMES = STR$(H%) + " Datensätze gefunden"

siehe auch:

START, READ