home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / database / tdb / demo / db06b.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-06-08  |  3.9 KB  |  109 lines

  1. { ──────────────────────────────────────────────────────────────── }
  2. {         TDB DEMOPROGRAMM 6b - VERWENDUNG "SIMPLEINDEX"           }
  3. { ──────────────────────────────────────────────────────────────── }
  4. { Verwendet die von "DB05" erzeugte Datenbank samt Indices (müssen }
  5. { bereits existieren), öffnet Datenbank- und Indexfiles (mittels   }
  6. { "AutoIndex") und gibt die Datenbank jeweils nach den verschie-   }
  7. { denen Indices sortiert aus.                                      }
  8. { ──────────────────────────────────────────────────────────────── }
  9. { Als Error-Handler wird wieder "ErrPrint" eingesetzt, wodurch     }
  10. { eventuelle Fehler am Drucker mitprotokolliert werden.            }
  11. { ──────────────────────────────────────────────────────────────── }
  12. {       (c)  1992  by  Aurora  featuring  M.J. Schwaiger           }
  13. { ──────────────────────────────────────────────────────────────── }
  14. {      History:                                                    }
  15. { 1992-06-02   MS   Interfacefestlegung und Implementierung.       }
  16. { ──────────────────────────────────────────────────────────────── }
  17.  
  18. PROGRAM Db06b;
  19.  
  20. {$UNDEF Windows}
  21.  
  22.   USES
  23. {$IFDEF Windows}
  24.     WINCRT,
  25. {$ENDIF}
  26.     DbTypes,                { Enthält die Typdefinitionen für alle }
  27.                             { Module des Datenbanksystems TDB.     }
  28.     LongIdle,               { Idle-Prozeduren für längere Vorgänge }
  29.     Error,                  { Fehlerbehandlungsroutinen, -handler  }
  30.     TDB;                    { Die eigentlichen Datenbank-Objekte.  }
  31.  
  32.  
  33.   VAR
  34.     DB             : PDataBase;                  { Datenbankobjekt }
  35.     Cnt            : LONGINT;
  36.     Index          : PINDEX;
  37.  
  38.  
  39.   BEGIN                                            { Hauptprogramm }
  40. {$IFNDEF Windows}
  41.     SetErrHandler (ErrPrint);         { Alle Fehler werden auf dem }
  42.                                       { Drucker mitprotokolliert.  }
  43.     SetLongIdleHandler (LIdleScreenInit,   { "Fortschrittsanzeige" }
  44.                                 LIdleScreenUpDate, LIdleScreenDone);
  45. {$ENDIF}
  46.     WRITELN (MEMAVAIL);
  47.  
  48.    { Speicherallozierung und Initialisierung des Datenbankobjektes }
  49.     DB := NEW (PDataBase, Use ('DB05'));
  50.  
  51.     IF (GetErr = 0) AND (DB^.Count > 0) THEN      { Keine Fehler ? }
  52.     BEGIN
  53.       DB^.SetDeleted (On);
  54.  
  55.       WRITELN (MEMAVAIL);
  56.  
  57.       DB^.First;
  58.  
  59.       Cnt := 0;
  60.                                       { Primärindex ist der Name ! }
  61.       WHILE (GetErr = 0) AND (NOT (DB^.EOF)) DO
  62.       BEGIN
  63.         INC (Cnt);
  64.         WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
  65.                       DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
  66.         DB^.Skip (1);
  67.       END; { WHILE NOT DB^.EOF DO }
  68.  
  69.       WRITELN;
  70.       WRITELN ('Das waren ', Cnt, ' Datensätze ! Stimmts ?');
  71.  
  72.       Index := NEW (PIndex, AutoUse ('DB05Anschrift', DB));
  73.       DB^.IndexOn (Index^.Key, Index);
  74.       Index := NEW (PIndex, AutoUse ('DB05Postleitzahl', DB));
  75.       DB^.IndexOn (Index^.Key, Index);
  76.       Index := NEW (PIndex, AutoUse ('DB05GEBOREN', DB));
  77.       DB^.IndexOn (Index^.Key, Index);
  78.       Index := NEW (PIndex, AutoUse ('DB05GEHALT', DB));
  79.       DB^.IndexOn (Index^.Key, Index);
  80.       Index := NEW (PIndex, AutoUse ('DB05Name', DB));
  81.       DB^.IndexOn (Index^.Key, Index);
  82.  
  83.       DB^.Last;
  84.  
  85.       Cnt := 0;
  86.       WRITELN;
  87.  
  88.                                       { Primärindex ist der Name ! }
  89.       WHILE (GetErr = 0) AND (NOT (DB^.BOF)) DO
  90.       BEGIN
  91.         INC (Cnt);
  92.         WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
  93.                       DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
  94.         DB^.Skip (-1);
  95.       END; { WHILE NOT DB^.EOF DO }
  96.  
  97.       WRITELN;
  98.       WRITELN ('Das waren ', Cnt, ' Datensätze ! Stimmts ?');
  99.  
  100.       DISPOSE (DB, Close); { Index wird automatisch mit gelöscht ! }
  101.     END; { IF (GetErr = 0) AND ... }
  102.  
  103.     WRITELN (MEMAVAIL);
  104.  
  105.     WRITELN;
  106.     WRITE ('Weiter mit Taste ...');
  107.     READLN;
  108.   END. { PROGRAM Db06b }
  109.