home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / database / tdb / demo / db06.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-07-20  |  4.4 KB  |  138 lines

  1. { ──────────────────────────────────────────────────────────────── }
  2. {     TDB DEMOPROGRAMM 6 - VERWENDUNG INDEX, SORTIERTE AUSGABE     }
  3. { ──────────────────────────────────────────────────────────────── }
  4. { Verwendet die von "DB05" erzeugte Datenbank samt Indices (müssen }
  5. { bereits existieren), öffnet Datenbank- und Indexfiles und gibt   }
  6. { die Datenbank jeweils nach den verschiedenen Indices sortiert    }
  7. { 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-05-05   MS   Interfacefestlegung und Implementierung.       }
  16. { ──────────────────────────────────────────────────────────────── }
  17.  
  18. PROGRAM Db06;
  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.     Index1,
  36.     Index          : PIndex;
  37.     Cnt            : LONGINT;
  38.  
  39.  
  40.   BEGIN                                            { Hauptprogramm }
  41. {$IFNDEF Windows}
  42.     SetErrHandler (ErrPrint);         { Alle Fehler werden auf dem }
  43.                                       { Drucker mitprotokolliert.  }
  44.     SetLongIdleHandler (LIdleScreenInit,   { "Fortschrittsanzeige" }
  45.                                 LIdleScreenUpDate, LIdleScreenDone);
  46. {$ENDIF}
  47.     WRITELN (MEMAVAIL);
  48.  
  49.    { Speicherallozierung und Initialisierung des Datenbankobjektes }
  50.     DB := NEW (PDataBase, Use ('DB05'));
  51.  
  52.     DB^.Go (10);                            { Was passiert jetzt ? }
  53.     DB^.Delete;
  54.     DB^.Go (20);
  55.     DB^.Delete;
  56.     DB^.Go (30);
  57.     DB^.Delete;
  58.     DB^.Go (40);
  59.     DB^.Delete;
  60.     DB^.Go (50);
  61.     DB^.Delete;
  62.     DB^.Go (60);
  63.     DB^.Delete;
  64.     DB^.Go (70);
  65.     DB^.Delete;
  66.     DB^.Go (80);
  67.     DB^.Delete;
  68.     DB^.Go (90);
  69.     DB^.Delete;
  70.     DB^.Go (100);
  71.     DB^.Delete;
  72.  
  73.     DB^.SetDeleted (On);
  74.  
  75.     IF (GetErr = 0) AND (DB^.Count > 0) THEN      { Keine Fehler ? }
  76.     BEGIN
  77.                                        { Initialisierung Indexfile }
  78.       Index := NEW (PIndex, Use ('DB05STR', 'STRASSE', DB));
  79.       DB^.IndexOn ('STRASSE', Index);
  80.  
  81.       Index := NEW (PIndex, Use ('DB05PLZ', 'PLZ', DB));
  82.       DB^.IndexOn ('PLZ', Index);
  83.  
  84.       Index := NEW (PIndex, Use ('DB05GEBOREN', 'GEBOREN', DB));
  85.       DB^.IndexOn ('GEBOREN', Index);
  86.  
  87.       Index1 := NEW (PIndex, Use ('DB05GEHALT', 'GEHALT', DB));
  88.       DB^.IndexOn ('GEHALT', Index1);
  89.  
  90.       Index := NEW (PIndex, Use ('DB05Name', 'NAME', DB));
  91.       DB^.IndexOn ('NAME', Index);
  92.  
  93.       DB^.SetPrimeIdx (Index1);
  94.  
  95.       WRITELN (MEMAVAIL);
  96.  
  97.       DB^.First;
  98.  
  99.       Cnt := 0;
  100.                                       { Primärindex ist der Name ! }
  101.       WHILE (GetErr = 0) AND (NOT (DB^.EOF)) DO
  102.       BEGIN
  103.         INC (Cnt);
  104.         WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
  105.                       DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
  106.         DB^.Skip (1);
  107.       END; { WHILE NOT DB^.EOF DO }
  108.  
  109.       WRITELN;
  110.       WRITELN ('Das waren ', Cnt, ' Datensätze ! Stimmts ?');
  111.  
  112.       DB^.Last;
  113.  
  114.       Cnt := 0;
  115.       WRITELN;
  116.  
  117.                                       { Primärindex ist der Name ! }
  118.       WHILE (GetErr = 0) AND (NOT (DB^.BOF)) DO
  119.       BEGIN
  120.         INC (Cnt);
  121.         WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
  122.                       DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
  123.         DB^.Skip (-1);
  124.       END; { WHILE NOT DB^.EOF DO }
  125.  
  126.       WRITELN;
  127.       WRITELN ('Das waren ', Cnt, ' Datensätze ! Stimmts ?');
  128.  
  129.       DISPOSE (DB, Close); { Index wird automatisch mit gelöscht ! }
  130.     END; { IF (GetErr = 0) AND ... }
  131.  
  132.     WRITELN (MEMAVAIL);
  133.  
  134.     WRITELN;
  135.     WRITE ('Weiter mit Taste ...');
  136.     READLN;
  137.   END. { PROGRAM Db06 }
  138.