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

  1. { ──────────────────────────────────────────────────────────────── }
  2. {         TDB DEMOPROGRAMM 6a - VERWENDUNG "SIMPLEINDEX"           }
  3. { ──────────────────────────────────────────────────────────────── }
  4. { Verwendet die von "DB05" erzeugte Datenbank samt Indices (müssen }
  5. { bereits existieren), öffnet Datenbank- und Indexfiles (mittels   }
  6. { "SimpleIndex") 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 Db06a;
  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.  
  37.  
  38.   BEGIN                                            { Hauptprogramm }
  39. {$IFNDEF Windows}
  40.     SetErrHandler (ErrPrint);         { Alle Fehler werden auf dem }
  41.                                       { Drucker mitprotokolliert.  }
  42.     SetLongIdleHandler (LIdleScreenInit,   { "Fortschrittsanzeige" }
  43.                                 LIdleScreenUpDate, LIdleScreenDone);
  44. {$ENDIF}
  45.     WRITELN (MEMAVAIL);
  46.  
  47.    { Speicherallozierung und Initialisierung des Datenbankobjektes }
  48.     DB := NEW (PDataBase, Use ('DB05'));
  49.  
  50.     IF (GetErr = 0) AND (DB^.Count > 0) THEN      { Keine Fehler ? }
  51.     BEGIN
  52.       DB^.SetDeleted (On);
  53.  
  54. { Die existieren noch nicht: }
  55.       DB^.SimpleIndex ('DB05Anschrift', 'STRASSE');
  56.       DB^.SimpleIndex ('DB05Postleitzahl', 'PLZ');
  57.  
  58. { Die existieren schon: }
  59.       DB^.SimpleIndex ('DB05GEBOREN', 'GEBOREN');
  60.       DB^.SimpleIndex ('DB05GEHALT', 'GEHALT');
  61.       DB^.SimpleIndex ('DB05Name', 'NAME');
  62.                             { Das war wohl etwas einfacher, oder ? }
  63.       WRITELN (MEMAVAIL);
  64.  
  65.       DB^.First;
  66.  
  67.       Cnt := 0;
  68.                                       { Primärindex ist der Name ! }
  69.       WHILE (GetErr = 0) AND (NOT (DB^.EOF)) DO
  70.       BEGIN
  71.         INC (Cnt);
  72.         WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
  73.                       DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
  74.         DB^.Skip (1);
  75.       END; { WHILE NOT DB^.EOF DO }
  76.  
  77.       WRITELN;
  78.       WRITELN ('Das waren ', Cnt, ' Datensätze ! Stimmts ?');
  79.  
  80.       DB^.Last;
  81.  
  82.       Cnt := 0;
  83.       WRITELN;
  84.  
  85.                                       { Primärindex ist der Name ! }
  86.       WHILE (GetErr = 0) AND (NOT (DB^.BOF)) DO
  87.       BEGIN
  88.         INC (Cnt);
  89.         WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
  90.                       DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
  91.         DB^.Skip (-1);
  92.       END; { WHILE NOT DB^.EOF DO }
  93.  
  94.       WRITELN;
  95.       WRITELN ('Das waren ', Cnt, ' Datensätze ! Stimmts ?');
  96.  
  97.       DISPOSE (DB, Close); { Index wird automatisch mit gelöscht ! }
  98.     END; { IF (GetErr = 0) AND ... }
  99.  
  100.     WRITELN (MEMAVAIL);
  101.  
  102.     WRITELN;
  103.     WRITE ('Weiter mit Taste ...');
  104.     READLN;
  105.   END. { PROGRAM Db06a }
  106.