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

  1. { ──────────────────────────────────────────────────────────────── }
  2. {                TDB DEMOPROGRAMM 5 - ERZEUGEN INDEX               }
  3. { ──────────────────────────────────────────────────────────────── }
  4. { Erzeugt eine neue Datenbank ("DB05.DBF") und "füllt" sie mit     }
  5. { 100 Testdatensätzen.                                             }
  6. { Anschließend wird die Datenbank normal geöffnet und für die      }
  7. { diversen Felder der Datenbank jeweils ein Index erzeugt.         }
  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-04-28   MS   Interfacefestlegung und Implementierung.       }
  16. { ──────────────────────────────────────────────────────────────── }
  17.  
  18. PROGRAM Db05;
  19.  
  20.   USES
  21. {$IFDEF Windows}
  22.     WINCRT,
  23. {$ENDIF}
  24.     DbTypes,                { Enthält die Typdefinitionen für alle }
  25.                             { Module des Datenbanksystems TDB.     }
  26.     Error,                  { Fehlerbehandlungsroutinen, -handler  }
  27.     LongIdle,               { Idle-Prozeduren für längere Vorgänge }
  28.     ATestGen,                                 { Testdatengenerator }
  29.     TDB;                    { Die eigentlichen Datenbank-Objekte.  }
  30.  
  31.  
  32.   VAR
  33.     DB             : PDataBase;                  { Datenbankobjekt }
  34.     Index1,                                         { Indexobjekte }
  35.     Index2,
  36.     Index3,
  37.     Index4,
  38.     Index5         : PIndex;
  39.     IdxCI          : TIdxCreateInfo;
  40.                           { Wird zum Initialisieren Index benötigt }
  41.     CI             : TCreateInfo;
  42.  
  43.   BEGIN                                            { Hauptprogramm }
  44. {$IFNDEF Windows}
  45.     SetErrHandler (ErrPrint);         { Alle Fehler werden auf dem }
  46.                                       { Drucker mitprotokolliert.  }
  47.     SetLongIdleHandler (LIdleScreenInit,   { "Fortschrittsanzeige" }
  48.                                 LIdleScreenUpDate, LIdleScreenDone);
  49. {$ENDIF}
  50.  
  51.     FILLCHAR (CI.Felder, SIZEOF (CI.Felder), 0);    { Vorsicht ist }
  52.                                    { die Mutter der Porzellankiste }
  53.  
  54.     CI.Felder [1].Name := 'NAME';           { Felddefinitionen für }
  55.     CI.Felder [1].Typ := 'C';                 { die neue Datenbank }
  56.     CI.Felder [1].Size := 50;
  57.     CI.Felder [1].NK := 0;
  58.  
  59.     CI.Felder [2].Name := 'VORNAME';
  60.     CI.Felder [2].Typ := 'C';
  61.     CI.Felder [2].Size := 50;
  62.     CI.Felder [2].NK := 0;
  63.  
  64.     CI.Felder [3].Name := 'STRASSE';
  65.     CI.Felder [3].Typ := 'C';
  66.     CI.Felder [3].Size := 100;
  67.     CI.Felder [3].NK := 0;
  68.  
  69.     CI.Felder [4].Name := 'PLZ';
  70.     CI.Felder [4].Typ := 'N';
  71.     CI.Felder [4].Size := 12;
  72.     CI.Felder [4].NK := 0;
  73.  
  74.     CI.Felder [5].Name := 'GEBOREN';
  75.     CI.Felder [5].Typ := 'D';
  76.     CI.Felder [5].Size := 8;
  77.     CI.Felder [5].NK := 0;
  78.  
  79.     CI.Felder [6].Name := 'GEHALT';
  80.     CI.Felder [6].Typ := 'N';
  81.     CI.Felder [6].Size := 16;
  82.     CI.Felder [6].NK := 2;
  83.  
  84.     CI.AnzFelder := 6;                        { Exakt 6 Felder ... }
  85.  
  86.     WRITELN;
  87.     WRITELN;
  88.  
  89.                             { Datenbank erzeugen, 100 Datensätze   }
  90.                            { anhängen, Datenbank wieder schließen. }
  91.     WRITELN (GenerateCreate ('DB05', CI, 100));
  92.  
  93.     WRITELN (MEMAVAIL);
  94.  
  95.    { Speicherallozierung und Initialisierung des Datenbankobjektes }
  96.     DB := NEW (PDataBase, Use ('DB05.DBF'));
  97.  
  98.     IF (GetErr = 0) AND (DB^.Count > 0) THEN      { Keine Fehler ? }
  99.     BEGIN
  100.       IdxCI.AField := 'NAME';                    { Auf Feld "Name" }
  101.       IdxCI.Typ := NTX;                        { Typ Clipper-Index }
  102.       IdxCI.IndexLen := 40;            { Schlüssellänge 20 Zeichen }
  103.       IdxCI.KeyBuild := 'NAME';             { dBase-"Bauanleitung" }
  104.  
  105.                           { Initialisierung / Erstellung Indexfile }
  106.       Index1 := NEW (PIndex, Create ('DB05Name', IdxCI, DB));
  107.  
  108.       DB^.IndexOn ('NAME', Index1);
  109.  
  110.       IdxCI.AField := 'STRASSE';              { Auf Feld "Strasse" }
  111.       IdxCI.Typ := NTX;                        { Typ Clipper-Index }
  112.       IdxCI.IndexLen := 60;            { Schlüssellänge 20 Zeichen }
  113.       IdxCI.KeyBuild := 'STRASSE';          { dBase-"Bauanleitung" }
  114.  
  115.                           { Initialisierung / Erstellung Indexfile }
  116.       Index2 := NEW (PIndex, Create ('DB05STR', IdxCI, DB));
  117.  
  118.       DB^.IndexOn ('STRASSE', Index2);
  119.  
  120.       IdxCI.AField := 'PLZ';                      { Auf Feld "PLZ" }
  121.       IdxCI.Typ := NTX;                        { Typ Clipper-Index }
  122.       IdxCI.IndexLen := 40;            { Schlüssellänge 20 Zeichen }
  123.       IdxCI.KeyBuild := 'PLZ';              { dBase-"Bauanleitung" }
  124.  
  125.                           { Initialisierung / Erstellung Indexfile }
  126.       Index3 := NEW (PIndex, Create ('DB05PLZ', IdxCI, DB));
  127.  
  128.       DB^.IndexOn ('PLZ', Index3);
  129.  
  130.       IdxCI.AField := 'GEBOREN';              { Auf Feld "GEBOREN" }
  131.       IdxCI.Typ := NTX;                        { Typ Clipper-Index }
  132.       IdxCI.IndexLen := 40;            { Schlüssellänge 20 Zeichen }
  133.       IdxCI.KeyBuild := 'GEBOREN';          { dBase-"Bauanleitung" }
  134.  
  135.                           { Initialisierung / Erstellung Indexfile }
  136.       Index4 := NEW (PIndex, Create ('DB05GEBOREN', IdxCI, DB));
  137.  
  138.       DB^.IndexOn ('GEBOREN', Index4);
  139.  
  140.       IdxCI.AField := 'GEHALT';                { Auf Feld "GEHALT" }
  141.       IdxCI.Typ := NTX;                        { Typ Clipper-Index }
  142.       IdxCI.IndexLen := 40;            { Schlüssellänge 20 Zeichen }
  143.       IdxCI.KeyBuild := 'GEHALT';           { dBase-"Bauanleitung" }
  144.  
  145.                           { Initialisierung / Erstellung Indexfile }
  146.       Index5 := NEW (PIndex, Create ('DB05GEHALT', IdxCI, DB));
  147.  
  148.       DB^.IndexOn ('GEHALT', Index5);
  149.  
  150.       WRITELN (MEMAVAIL);
  151.  
  152.       DISPOSE (DB, Close); { Index wird automatisch mit gelöscht ! }
  153.     END; { IF (GetErr = 0) AND ... }
  154.  
  155.     WRITELN (MEMAVAIL);
  156.  
  157.     WRITELN;
  158.     WRITE ('Weiter mit Return-Taste ...');
  159.     READLN;
  160.   END. { PROGRAM Db05 }
  161.