[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
DB06.PAS

 { ---------------------------------------------------------------- }
 {     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 }

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson