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

  1. { ──────────────────────────────────────────────────────────────── }
  2. {             TDB DEMOPROGRAMM 12 - DATENBANK PACKEN               }
  3. { ──────────────────────────────────────────────────────────────── }
  4. { Erzeugt eine neue Datenbank ("DB12.DBF"), "füllt" sie mit        }
  5. { 100 Testdatensätzen und gibt diese aus.                          }
  6. { Anschließend werden einige Datensätze gelöscht, die Datenbank    }
  7. { gepackt und der (neue) Inhalt noch einmal ausgegeben.            }
  8. { ──────────────────────────────────────────────────────────────── }
  9. {       (c)  1992  by  Aurora  featuring  M.J. Schwaiger           }
  10. { ──────────────────────────────────────────────────────────────── }
  11. {      History:                                                    }
  12. { 1992-04-15   MS   Interfacefestlegung und Implementierung.       }
  13. { ──────────────────────────────────────────────────────────────── }
  14.  
  15. PROGRAM DbDemo12;
  16.  
  17. {$UNDEF Windows}
  18.  
  19.   USES
  20.     DbTypes,                { Enthält die Typdefinitionen für alle }
  21.                             { Module des Datenbanksystems TDB.     }
  22.     ADatum,                 { Definition TDate (unter anderem ...) }
  23.     AStrTool,                                 { Stringformatierung }
  24.     TDB,                    { Die eigentlichen Datenbank-Objekte.  }
  25.     ATestGen,                                 { Testdatengenerator }
  26.     LongIdle,               { Idle-Prozeduren für längere Vorgänge }
  27.     Error;                  { Fehlerbehandlungsroutinen, -handler  }
  28.  
  29.  
  30.   VAR
  31.     CI             : TCreateInfo;
  32.     DB             : PDataBase;                  { Datenbankobjekt }
  33.     Index          : PIndex;                         { Indexobjekt }
  34.     Datum          : TDate;
  35.     Cnt            : BYTE;
  36.     Typ            : CHAR;                               { Feldtyp }
  37.     Size,                                              { Feldgröße }
  38.     NK             : BYTE;          { Bei Zahlen: Nachkommastellen }
  39.  
  40.  
  41.   BEGIN                                            { Hauptprogramm }
  42. {$IFNDEF Windows}
  43.     SetErrHandler (ErrPrint);         { Alle Fehler werden auf dem }
  44.                                       { Drucker mitprotokolliert.  }
  45.     SetLongIdleHandler (LIdleScreenInit,   { "Fortschrittsanzeige" }
  46.                                 LIdleScreenUpDate, LIdleScreenDone);
  47. {$ENDIF}
  48.     WRITELN (MEMAVAIL);
  49.  
  50.     WRITELN;
  51. (*
  52.     FILLCHAR (CI.Felder, SIZEOF (CI.Felder), 0);    { Vorsicht ist }
  53.                                    { die Mutter der Porzellankiste }
  54.  
  55.     CI.Felder [1].Name := 'NAME';           { Felddefinitionen für }
  56.     CI.Felder [1].Typ := 'C';                 { die neue Datenbank }
  57.     CI.Felder [1].Size := 50;
  58.     CI.Felder [1].NK := 0;
  59.  
  60.     CI.Felder [2].Name := 'VORNAME';
  61.     CI.Felder [2].Typ := 'C';
  62.     CI.Felder [2].Size := 50;
  63.     CI.Felder [2].NK := 0;
  64.  
  65.     CI.Felder [3].Name := 'STRASSE';
  66.     CI.Felder [3].Typ := 'C';
  67.     CI.Felder [3].Size := 100;
  68.     CI.Felder [3].NK := 0;
  69.  
  70.     CI.Felder [4].Name := 'PLZ';
  71.     CI.Felder [4].Typ := 'N';
  72.     CI.Felder [4].Size := 12;
  73.     CI.Felder [4].NK := 0;
  74.  
  75.     CI.Felder [5].Name := 'GEBOREN';
  76.     CI.Felder [5].Typ := 'D';
  77.     CI.Felder [5].Size := 8;
  78.     CI.Felder [5].NK := 0;
  79.  
  80.     CI.Felder [6].Name := 'GEHALT';
  81.     CI.Felder [6].Typ := 'N';
  82.     CI.Felder [6].Size := 16;
  83.     CI.Felder [6].NK := 2;
  84.  
  85.     CI.AnzFelder := 6;                        { Exakt 6 Felder ... }
  86.  
  87.     WRITELN;
  88.     WRITELN;
  89.  
  90.                             { Datenbank erzeugen, 100 Datensätze   }
  91.                            { anhängen, Datenbank wieder schließen. }
  92.     WRITELN (GenerateCreate ('DB12', CI, 1000));
  93. *)
  94.     DB := NEW (PDataBase, Use ('DB12'));
  95.  
  96.     IF GetErr = 0 THEN
  97.     BEGIN
  98.       Index := NEW (PIndex, Use ('DB12Name', 'NAME', DB));
  99.       DB^.IndexOn ('NAME', Index);
  100.  
  101.       WRITELN (MEMAVAIL);
  102. (*
  103.       DB^.First;
  104.  
  105.       Cnt := 0;
  106.  
  107.       WHILE (GetErr = 0) AND NOT (DB^.EOF) DO
  108.       BEGIN
  109.         INC (Cnt);
  110.  
  111.         WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
  112.                       DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
  113.  
  114.         DB^.Skip (1);
  115.       END; { WHILE NOT (DB^.EOF) DO }
  116.  
  117.       WRITELN;
  118.       WRITELN ('Das waren ', Cnt, ' Datensätze !');
  119.       WRITELN;
  120.  
  121.       DB^.Go (10);
  122.       DB^.Delete;
  123.       DB^.Go (20);
  124.       DB^.Delete;
  125.       DB^.Go (30);
  126.       DB^.Delete;
  127.       DB^.Go (40);
  128.       DB^.Delete;
  129.       DB^.Go (50);
  130.       DB^.Delete;
  131.       DB^.Go (60);
  132.       DB^.Delete;
  133.       DB^.Go (70);
  134.       DB^.Delete;
  135.       DB^.Go (80);
  136.       DB^.Delete;
  137.       DB^.Go (90);
  138.       DB^.Delete;
  139.       DB^.Go (100);
  140.       DB^.Delete;
  141. *)
  142.       IF NOT (DB^.Pack) THEN
  143.         WRITELN ('Probleme beim Packen !')
  144.       ELSE
  145.       BEGIN
  146.         DB^.First;
  147.  
  148.         Cnt := 0;
  149.  
  150.         WHILE (GetErr = 0) AND NOT (DB^.EOF) DO
  151.         BEGIN
  152.           INC (Cnt);
  153.  
  154.           WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
  155.                         DB^.Read ('NAME'), ' ', DB^.ReadR ('GEHALT'));
  156.  
  157.           DB^.Skip (1);
  158.         END; { WHILE NOT (DB^.EOF) DO }
  159.  
  160.         WRITELN;
  161.         WRITELN ('Das waren ', Cnt, ' Datensätze !');
  162.         WRITELN;
  163.       END; { IF NOT (DB^.Pack) THEN ... ELSE }
  164.  
  165.       DISPOSE (DB, Close); { Index wird automatisch mit gelöscht ! }
  166.     END; { IF GetErr = 0 THEN }
  167.  
  168.     WRITELN (MEMAVAIL);
  169.  
  170.     WRITELN;
  171.     WRITE ('Weiter mit Taste ...');
  172.     READLN;
  173.     WRITELN;
  174.   END. { PROGRAM DbDemo12 }
  175.