[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
DB13.PAS
{ ---------------------------------------------------------------- }
{ TDB DEMOPROGRAMM 13 - VERGLEICH (IDX) GO / RECNO etc. }
{ ---------------------------------------------------------------- }
{ Erzeugt eine neue Datenbank ("DB13.DBF"), "f.llt" sie mit 100 }
{ Testdatens.tzen und legt einen Index auf das Namensfeld. }
{ Anschlie.end wird die Datenbank normal ge.ffnet und - begleitet }
{ von diversen "Go"'s und "IdxGo"'s die logische und die physika- }
{ lische Satznummer ausgegeben. }
{ ---------------------------------------------------------------- }
{ Nicht wundern, wenn's ab und zu etwas l.nger dauert: dieses Pro- }
{ gramm demonstriert das Verhalten von Programmkonstrukten, die }
{ eigentlich - aus Performance-Gr.nden - nicht verwendet werden }
{ sollten, n.mlich "Go"'s und "IdxGo"'s in indizierten Daten- }
{ banken. }
{ ---------------------------------------------------------------- }
{ Als Error-Handler wird wieder "ErrPrint" eingesetzt, wodurch }
{ eventuelle Fehler am Drucker mitprotokolliert werden. }
{ ---------------------------------------------------------------- }
{ (c) 1992 by Aurora featuring M.J. Schwaiger }
{ ---------------------------------------------------------------- }
{ History: }
{ 1992-07-19 MS Interfacefestlegung und Implementierung. }
{ ---------------------------------------------------------------- }
PROGRAM Db13;
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 }
Index : PIndex;
IdxCI : TIdxCreateInfo;
{ Wird zum Initialisieren Index ben.tigt }
CI : TCreateInfo;
{ Wird zum Initialisieren Datenbank ben.tigt }
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 ('DB13', CI, 100));
{ ---------------------------------------------------------------- }
*)
WRITELN (MEMAVAIL);
{ Speicherallozierung und Initialisierung des Datenbankobjektes }
DB := NEW (PDataBase, Use ('DB05.DBF'));
IF (GetErr = 0) AND (DB^.LastRec > 0) THEN { Keine Fehler ? }
BEGIN
IdxCI.AField := 'NAME'; { Auf Feld "Name" }
IdxCI.Typ := NTX; { Typ Clipper-Index }
IdxCI.IndexLen := 40; { Schl.ssell.nge 40 Zeichen }
IdxCI.KeyBuild := 'NAME'; { dBase-"Bauanleitung" }
{ Initialisierung / Erstellung Indexfile }
Index := NEW (PIndex, Create ('DB13Name', IdxCI, DB));
DB^.IndexOn ('NAME', Index);
{ ---------------------------------------------------------------- }
DB^.Go (10);
DB^.DELETE;
DB^.Go (40);
DB^.DELETE;
DB^.Go (60);
DB^.DELETE;
WRITELN ('S.tze physikalisch: ', DB^.LastRec,
' Logisch: ', DB^.Count);
WRITELN;
{ ---------------------------------------------------------------- }
DB^.Go (10);
WRITELN ('Nach DB^.Go (10) (deleted): ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
DB^.Skip (1);
WRITELN ('Darauffolgendes DB^.Skip: ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
DB^.Skip (1);
WRITELN ('Noch ein DB^.Skip: ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
WRITELN;
{ ---------------------------------------------------------------- }
DB^.IdxGo (10);
WRITELN ('Nach DB^.IdxGo (10): ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
DB^.Skip (1);
WRITELN ('Darauffolgendes DB^.Skip: ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
DB^.Skip (1);
WRITELN ('Noch ein DB^.Skip: ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
WRITELN;
{ ---------------------------------------------------------------- }
DB^.IdxGo (50);
WRITELN ('Nach DB^.IdxGo (50): ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
DB^.Skip ( - 1);
WRITELN ('Darauffolgendes DB^.Skip (-1): ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
DB^.Skip ( - 1);
WRITELN ('Noch ein DB^.Skip (-1): ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
WRITELN;
{ ---------------------------------------------------------------- }
DB^.Go (50);
WRITELN ('Nach DB^.Go (50): ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
DB^.Skip ( - 1);
WRITELN ('Darauffolgendes DB^.Skip (-1): ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
DB^.Skip ( - 1);
WRITELN ('Noch ein DB^.Skip (-1): ',
DB^.RecNo, ' / ', DB^.IdxRecNo);
WRITELN;
{ ---------------------------------------------------------------- }
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 Db13 }
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson