home *** CD-ROM | disk | FTP | other *** search
- { ──────────────────────────────────────────────────────────────── }
- { TDB DEMOPROGRAMM 5 - ERZEUGEN INDEX }
- { ──────────────────────────────────────────────────────────────── }
- { Erzeugt eine neue Datenbank ("DB05.DBF") und "füllt" sie mit }
- { 100 Testdatensätzen. }
- { Anschließend wird die Datenbank normal geöffnet und für die }
- { diversen Felder der Datenbank jeweils ein Index erzeugt. }
- { ──────────────────────────────────────────────────────────────── }
- { Als Error-Handler wird wieder "ErrPrint" eingesetzt, wodurch }
- { eventuelle Fehler am Drucker mitprotokolliert werden. }
- { ──────────────────────────────────────────────────────────────── }
- { (c) 1992 by Aurora featuring M.J. Schwaiger }
- { ──────────────────────────────────────────────────────────────── }
- { History: }
- { 1992-04-28 MS Interfacefestlegung und Implementierung. }
- { ──────────────────────────────────────────────────────────────── }
-
- PROGRAM Db05;
-
- USES
- {$IFDEF Windows}
- WINCRT,
- {$ENDIF}
- DbTypes, { Enthält die Typdefinitionen für alle }
- { Module des Datenbanksystems TDB. }
- Error, { Fehlerbehandlungsroutinen, -handler }
- LongIdle, { Idle-Prozeduren für längere Vorgänge }
- ATestGen, { Testdatengenerator }
- TDB; { Die eigentlichen Datenbank-Objekte. }
-
-
- VAR
- DB : PDataBase; { Datenbankobjekt }
- Index1, { Indexobjekte }
- Index2,
- Index3,
- Index4,
- Index5 : PIndex;
- IdxCI : TIdxCreateInfo;
- { Wird zum Initialisieren Index benötigt }
- CI : TCreateInfo;
-
- BEGIN { Hauptprogramm }
- {$IFNDEF Windows}
- SetErrHandler (ErrPrint); { Alle Fehler werden auf dem }
- { Drucker mitprotokolliert. }
- SetLongIdleHandler (LIdleScreenInit, { "Fortschrittsanzeige" }
- LIdleScreenUpDate, LIdleScreenDone);
- {$ENDIF}
-
- FILLCHAR (CI.Felder, SIZEOF (CI.Felder), 0); { Vorsicht ist }
- { die Mutter der Porzellankiste }
-
- CI.Felder [1].Name := 'NAME'; { Felddefinitionen für }
- CI.Felder [1].Typ := 'C'; { die neue Datenbank }
- CI.Felder [1].Size := 50;
- CI.Felder [1].NK := 0;
-
- CI.Felder [2].Name := 'VORNAME';
- CI.Felder [2].Typ := 'C';
- CI.Felder [2].Size := 50;
- CI.Felder [2].NK := 0;
-
- CI.Felder [3].Name := 'STRASSE';
- CI.Felder [3].Typ := 'C';
- CI.Felder [3].Size := 100;
- CI.Felder [3].NK := 0;
-
- CI.Felder [4].Name := 'PLZ';
- CI.Felder [4].Typ := 'N';
- CI.Felder [4].Size := 12;
- CI.Felder [4].NK := 0;
-
- CI.Felder [5].Name := 'GEBOREN';
- CI.Felder [5].Typ := 'D';
- CI.Felder [5].Size := 8;
- CI.Felder [5].NK := 0;
-
- CI.Felder [6].Name := 'GEHALT';
- CI.Felder [6].Typ := 'N';
- CI.Felder [6].Size := 16;
- CI.Felder [6].NK := 2;
-
- CI.AnzFelder := 6; { Exakt 6 Felder ... }
-
- WRITELN;
- WRITELN;
-
- { Datenbank erzeugen, 100 Datensätze }
- { anhängen, Datenbank wieder schließen. }
- WRITELN (GenerateCreate ('DB05', CI, 100));
-
- WRITELN (MEMAVAIL);
-
- { Speicherallozierung und Initialisierung des Datenbankobjektes }
- DB := NEW (PDataBase, Use ('DB05.DBF'));
-
- IF (GetErr = 0) AND (DB^.Count > 0) THEN { Keine Fehler ? }
- BEGIN
- IdxCI.AField := 'NAME'; { Auf Feld "Name" }
- IdxCI.Typ := NTX; { Typ Clipper-Index }
- IdxCI.IndexLen := 40; { Schlüssellänge 20 Zeichen }
- IdxCI.KeyBuild := 'NAME'; { dBase-"Bauanleitung" }
-
- { Initialisierung / Erstellung Indexfile }
- Index1 := NEW (PIndex, Create ('DB05Name', IdxCI, DB));
-
- DB^.IndexOn ('NAME', Index1);
-
- IdxCI.AField := 'STRASSE'; { Auf Feld "Strasse" }
- IdxCI.Typ := NTX; { Typ Clipper-Index }
- IdxCI.IndexLen := 60; { Schlüssellänge 20 Zeichen }
- IdxCI.KeyBuild := 'STRASSE'; { dBase-"Bauanleitung" }
-
- { Initialisierung / Erstellung Indexfile }
- Index2 := NEW (PIndex, Create ('DB05STR', IdxCI, DB));
-
- DB^.IndexOn ('STRASSE', Index2);
-
- IdxCI.AField := 'PLZ'; { Auf Feld "PLZ" }
- IdxCI.Typ := NTX; { Typ Clipper-Index }
- IdxCI.IndexLen := 40; { Schlüssellänge 20 Zeichen }
- IdxCI.KeyBuild := 'PLZ'; { dBase-"Bauanleitung" }
-
- { Initialisierung / Erstellung Indexfile }
- Index3 := NEW (PIndex, Create ('DB05PLZ', IdxCI, DB));
-
- DB^.IndexOn ('PLZ', Index3);
-
- IdxCI.AField := 'GEBOREN'; { Auf Feld "GEBOREN" }
- IdxCI.Typ := NTX; { Typ Clipper-Index }
- IdxCI.IndexLen := 40; { Schlüssellänge 20 Zeichen }
- IdxCI.KeyBuild := 'GEBOREN'; { dBase-"Bauanleitung" }
-
- { Initialisierung / Erstellung Indexfile }
- Index4 := NEW (PIndex, Create ('DB05GEBOREN', IdxCI, DB));
-
- DB^.IndexOn ('GEBOREN', Index4);
-
- IdxCI.AField := 'GEHALT'; { Auf Feld "GEHALT" }
- IdxCI.Typ := NTX; { Typ Clipper-Index }
- IdxCI.IndexLen := 40; { Schlüssellänge 20 Zeichen }
- IdxCI.KeyBuild := 'GEHALT'; { dBase-"Bauanleitung" }
-
- { Initialisierung / Erstellung Indexfile }
- Index5 := NEW (PIndex, Create ('DB05GEHALT', IdxCI, DB));
-
- DB^.IndexOn ('GEHALT', Index5);
-
- WRITELN (MEMAVAIL);
-
- DISPOSE (DB, Close); { Index wird automatisch mit gelöscht ! }
- END; { IF (GetErr = 0) AND ... }
-
- WRITELN (MEMAVAIL);
-
- WRITELN;
- WRITE ('Weiter mit Return-Taste ...');
- READLN;
- END. { PROGRAM Db05 }
-