home *** CD-ROM | disk | FTP | other *** search
- { ──────────────────────────────────────────────────────────────── }
- { TDB DEMOPROGRAMM 11 - SUCHEN VON FELDINHALTEN }
- { ──────────────────────────────────────────────────────────────── }
- { Verwendet die von "DB05" erzeugte Datenbank samt Indices (müssen }
- { bereits existieren), öffnet Datenbank- und Indexfiles und sucht }
- { nach diversen Feldinhalten. }
- { ──────────────────────────────────────────────────────────────── }
- { Interessant ist es, einmal die Index-Objekte herauszunehmen und }
- { den Zeitbedarf zu vergleichen. }
- { ──────────────────────────────────────────────────────────────── }
- { Als Error-Handler wird wieder "ErrPrint" eingesetzt, wodurch }
- { eventuelle Fehler am Drucker mitprotokolliert werden. }
- { ──────────────────────────────────────────────────────────────── }
- { (c) 1992 by Aurora featuring M.J. Schwaiger }
- { ──────────────────────────────────────────────────────────────── }
- { History: }
- { 1992-05-26 MS Interfacefestlegung und Implementierung. }
- { ──────────────────────────────────────────────────────────────── }
-
- PROGRAM Db11;
-
- {$UNDEF Windows}
-
- USES
- {$IFDEF Windows}
- WINCRT,
- {$ENDIF}
- DbTypes, { Enthält die Typdefinitionen für alle }
- { Module des Datenbanksystems TDB. }
- Error, { Fehlerbehandlungsroutinen, -handler }
- TDB; { Die eigentlichen Datenbank-Objekte. }
-
-
- VAR
- DB : PDataBase; { Datenbankobjekt }
- Index : PIndex;
- Where : LONGINT;
- Begriff : STRING;
- SR : PDbSearchRec;
-
-
- BEGIN { Hauptprogramm }
- {$IFNDEF Windows}
- SetErrHandler (ErrPrint); { Alle Fehler werden auf dem }
- { Drucker mitprotokolliert. }
- {$ENDIF}
- WRITELN (MEMAVAIL);
-
- { Speicherallozierung und Initialisierung des Datenbankobjektes }
- DB := NEW (PDataBase, Use ('DB05'));
-
- DB^.SetDeleted (On);
-
- IF (GetErr = 0) AND (DB^.Count > 0) THEN { Keine Fehler ? }
- BEGIN
- { Initialisierung Indexfile }
- (*
- Index := NEW (PIndex, Use ('DB05STR', 'STRASSE', DB));
- DB^.IndexOn ('STRASSE', Index);
-
- Index := NEW (PIndex, Use ('DB05PLZ', 'PLZ', DB));
- DB^.IndexOn ('PLZ', Index);
-
- Index := NEW (PIndex, Use ('DB05GEBOREN', 'GEBOREN', DB));
- DB^.IndexOn ('GEBOREN', Index);
-
- Index := NEW (PIndex, Use ('DB05GEHALT', 'GEHALT', DB));
- DB^.IndexOn ('GEHALT', Index);
-
- Index := NEW (PIndex, Use ('DB05Name', 'NAME', DB));
- DB^.IndexOn ('NAME', Index);
- *)
- WRITELN (MEMAVAIL);
-
- REPEAT
- WRITELN;
- WRITE ('Gehalt >= 0, Name <= "M", Name >= ? (CR = Ende) ');
- READLN (Begriff);
-
- IF Begriff <> '' THEN
- BEGIN
- { Hier die gewünschte cpXXX-Konstante eintragen ! }
- SR := NewSearchRec ('NAME', Begriff, cpGreaterEqual,
- NewSearchRec ('NAME', 'M', cpLessEqual,
- NewSearchRec ('GEHALT', '0', cpGreaterEqual, Nil
- )
- )
- );
-
- Where := DB^.Search (SR);
-
- IF Where > 0 THEN
- WHILE Where > 0 DO
- BEGIN
- WRITELN (Where : 3, '-', DB^.RecNo : 3, ': ',
- DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
-
- Where := DB^.Continue;
- END
- ELSE
- WRITELN ('Nicht gefunden !');
-
- DisposeSearchRec (SR);
- END; { IF Begriff <> '' THEN }
- UNTIL (GetErr <> 0) OR (Begriff = '');
-
- REPEAT
- WRITELN;
- WRITE ('Geboren enthält "92", Name < "XZ", Name > ? (CR = Ende) ');
- READLN (Begriff);
-
- IF Begriff <> '' THEN
- BEGIN
- { Hier die gewünschte cpXXX-Konstante eintragen ! }
- SR := NewSearchRec ('NAME', Begriff, cpGreater,
- NewSearchRec ('NAME', 'XZ', cpLess,
- NewSearchRec ('GEBOREN', '92', cpIsIn, Nil
- )
- )
- );
-
- Where := DB^.Search (SR);
-
- IF Where > 0 THEN
- WHILE Where > 0 DO
- BEGIN
- WRITELN (Where : 3, '-', DB^.RecNo : 3, ': ',
- DB^.Read ('NAME'), ' ', DB^.ReadD_ ('GEBOREN'));
-
- Where := DB^.Continue;
- END
- ELSE
- WRITELN ('Nicht gefunden !');
-
- DisposeSearchRec (SR);
- END; { IF Begriff <> '' THEN }
- UNTIL (GetErr <> 0) OR (Begriff = '');
-
- REPEAT
- WRITELN;
- WRITE ('Simpel-Suche Name <= ? (CR = Ende) ');
- READLN (Begriff);
-
- IF Begriff <> '' THEN
- BEGIN
- { Hier die gewünschte cpXXX-Konstante eintragen ! }
- SR := NewSearchRec ('NAME', Begriff, cpLessEqual, Nil
- );
-
- Where := DB^.Search (SR);
-
- IF Where > 0 THEN
- WHILE Where > 0 DO
- BEGIN
- WRITELN (Where : 3, '-', DB^.RecNo : 3, ': ',
- DB^.Read ('NAME'), ' ', DB^.ReadD_ ('GEBOREN'));
-
- Where := DB^.Continue;
- END
- ELSE
- WRITELN ('Nicht gefunden !');
-
- DisposeSearchRec (SR);
- END; { IF Begriff <> '' THEN }
- UNTIL (GetErr <> 0) OR (Begriff = '');
-
- DISPOSE (DB, Close); { Index wird automatisch mit gelöscht ! }
- END; { IF (GetErr = 0) AND ... }
-
- WRITELN (MEMAVAIL);
-
- WRITELN;
- WRITE ('Weiter mit Taste ...');
- READLN;
- END. { PROGRAM Db11 }
-