home *** CD-ROM | disk | FTP | other *** search
- { ──────────────────────────────────────────────────────────────── }
- { TDB DEMOPROGRAMM 6 - VERWENDUNG INDEX, SORTIERTE AUSGABE }
- { ──────────────────────────────────────────────────────────────── }
- { Verwendet die von "DB05" erzeugte Datenbank samt Indices (müssen }
- { bereits existieren), öffnet Datenbank- und Indexfiles und gibt }
- { die Datenbank jeweils nach den verschiedenen Indices sortiert }
- { aus. }
- { ──────────────────────────────────────────────────────────────── }
- { 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-05 MS Interfacefestlegung und Implementierung. }
- { ──────────────────────────────────────────────────────────────── }
-
- PROGRAM Db06;
-
- {$UNDEF Windows}
-
- USES
- {$IFDEF Windows}
- WINCRT,
- {$ENDIF}
- DbTypes, { Enthält die Typdefinitionen für alle }
- { Module des Datenbanksystems TDB. }
- LongIdle, { Idle-Prozeduren für längere Vorgänge }
- Error, { Fehlerbehandlungsroutinen, -handler }
- TDB; { Die eigentlichen Datenbank-Objekte. }
-
-
- VAR
- DB : PDataBase; { Datenbankobjekt }
- Index1,
- Index : PIndex;
- Cnt : LONGINT;
-
-
- BEGIN { Hauptprogramm }
- {$IFNDEF Windows}
- SetErrHandler (ErrPrint); { Alle Fehler werden auf dem }
- { Drucker mitprotokolliert. }
- SetLongIdleHandler (LIdleScreenInit, { "Fortschrittsanzeige" }
- LIdleScreenUpDate, LIdleScreenDone);
- {$ENDIF}
- WRITELN (MEMAVAIL);
-
- { Speicherallozierung und Initialisierung des Datenbankobjektes }
- DB := NEW (PDataBase, Use ('DB05'));
-
- DB^.Go (10); { Was passiert jetzt ? }
- DB^.Delete;
- DB^.Go (20);
- DB^.Delete;
- DB^.Go (30);
- DB^.Delete;
- DB^.Go (40);
- DB^.Delete;
- DB^.Go (50);
- DB^.Delete;
- DB^.Go (60);
- DB^.Delete;
- DB^.Go (70);
- DB^.Delete;
- DB^.Go (80);
- DB^.Delete;
- DB^.Go (90);
- DB^.Delete;
- DB^.Go (100);
- DB^.Delete;
-
- 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);
-
- Index1 := NEW (PIndex, Use ('DB05GEHALT', 'GEHALT', DB));
- DB^.IndexOn ('GEHALT', Index1);
-
- Index := NEW (PIndex, Use ('DB05Name', 'NAME', DB));
- DB^.IndexOn ('NAME', Index);
-
- DB^.SetPrimeIdx (Index1);
-
- WRITELN (MEMAVAIL);
-
- DB^.First;
-
- Cnt := 0;
- { Primärindex ist der Name ! }
- WHILE (GetErr = 0) AND (NOT (DB^.EOF)) DO
- BEGIN
- INC (Cnt);
- WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
- DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
- DB^.Skip (1);
- END; { WHILE NOT DB^.EOF DO }
-
- WRITELN;
- WRITELN ('Das waren ', Cnt, ' Datensätze ! Stimmts ?');
-
- DB^.Last;
-
- Cnt := 0;
- WRITELN;
-
- { Primärindex ist der Name ! }
- WHILE (GetErr = 0) AND (NOT (DB^.BOF)) DO
- BEGIN
- INC (Cnt);
- WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
- DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
- DB^.Skip (-1);
- END; { WHILE NOT DB^.EOF DO }
-
- WRITELN;
- WRITELN ('Das waren ', Cnt, ' Datensätze ! Stimmts ?');
-
- DISPOSE (DB, Close); { Index wird automatisch mit gelöscht ! }
- END; { IF (GetErr = 0) AND ... }
-
- WRITELN (MEMAVAIL);
-
- WRITELN;
- WRITE ('Weiter mit Taste ...');
- READLN;
- END. { PROGRAM Db06 }
-