[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
DB11.PAS
{ ---------------------------------------------------------------- }
{ TDB DEMOPROGRAMM 11 - SUCHEN VON FELDINHALTEN }
{ ---------------------------------------------------------------- }
{ Verwendet die von "DB05" erzeugte Datenbank samt Indices (m.ssen }
{ bereits existieren), .ffnet Datenbank- und Indexfiles und sucht }
{ nach diversen Feldinhalten. }
{ ---------------------------------------------------------------- }
{ Interessant ist es, einmal die Index-Objekte herauszunehmen und }
{ den Zeitbedarf zu vergleichen. }
{ ---------------------------------------------------------------- }
{ Als Error-Handler wird wieder "ErrPrint" eingesetzt, wodurch }
{ eventuelle Fehler am Drucker mitprotokolliert werden. }
{ ---------------------------------------------------------------- }
{ (c) 1992 by Aurora featuring M.J. Schwaiger }
{ ---------------------------------------------------------------- }
{ History: }
{ 1992-05-26 MS Interfacefestlegung und Implementierung. }
{ ---------------------------------------------------------------- }
PROGRAM Db11;
{$UNDEF Windows}
USES
{$IFDEF Windows}
WINCRT,
{$ENDIF}
DbTypes, { Enth.lt die Typdefinitionen f.r alle }
{ Module des Datenbanksystems TDB. }
Error, { Fehlerbehandlungsroutinen, -handler }
TDB; { Die eigentlichen Datenbank-Objekte. }
VAR
DB : PDataBase; { Datenbankobjekt }
Index : PIndex;
Where : LONGINT;
Begriff : STRING;
SR : PDbSearchRec;
BEGIN { Hauptprogramm }
{$IFNDEF Windows}
SetErrHandler (ErrPrint); { Alle Fehler werden auf dem }
{ Drucker mitprotokolliert. }
{$ENDIF}
WRITELN (MEMAVAIL);
{ Speicherallozierung und Initialisierung des Datenbankobjektes }
DB := NEW (PDataBase, Use ('DB05'));
DB^.SetDeleted (On);
IF (GetErr = 0) AND (DB^.Count > 0) THEN { Keine Fehler ? }
BEGIN
{ Initialisierung Indexfile }
(*
Index := NEW (PIndex, Use ('DB05STR', 'STRASSE', DB));
DB^.IndexOn ('STRASSE', Index);
Index := NEW (PIndex, Use ('DB05PLZ', 'PLZ', DB));
DB^.IndexOn ('PLZ', Index);
Index := NEW (PIndex, Use ('DB05GEBOREN', 'GEBOREN', DB));
DB^.IndexOn ('GEBOREN', Index);
Index := NEW (PIndex, Use ('DB05GEHALT', 'GEHALT', DB));
DB^.IndexOn ('GEHALT', Index);
Index := NEW (PIndex, Use ('DB05Name', 'NAME', DB));
DB^.IndexOn ('NAME', Index);
*)
WRITELN (MEMAVAIL);
REPEAT
WRITELN;
WRITE ('Gehalt >= 0, Name <= "M", Name >= ? (CR = Ende) ');
READLN (Begriff);
IF Begriff <> '' THEN
BEGIN
{ Hier die gew.nschte cpXXX-Konstante eintragen ! }
SR := NewSearchRec ('NAME', Begriff, CpGreaterEqual,
NewSearchRec ('NAME', 'M', CpLessEqual,
NewSearchRec ('GEHALT', '0', CpGreaterEqual, Nil
)
)
);
Where := DB^.Search (SR);
IF Where > 0 THEN
WHILE Where > 0 DO
BEGIN
WRITELN (Where : 3, '-', DB^.RecNo : 3, ': ',
DB^.READ ('NAME'), ' ', DB^.ReadR ('GEHALT'));
Where := DB^.coNtinue;
END
ELSE
WRITELN ('Nicht gefunden !');
DisposeSearchRec (SR);
END; { IF Begriff <> '' THEN }
UNTIL (GetErr <> 0) OR (Begriff = '');
REPEAT
WRITELN;
WRITE ('Geboren enth.lt "92", Name < "XZ", Name > ? (CR = Ende) ');
READLN (Begriff);
IF Begriff <> '' THEN
BEGIN
{ Hier die gew.nschte cpXXX-Konstante eintragen ! }
SR := NewSearchRec ('NAME', Begriff, CpGreater,
NewSearchRec ('NAME', 'XZ', CpLess,
NewSearchRec ('GEBOREN', '92', CpIsIn, Nil
)
)
);
Where := DB^.Search (SR);
IF Where > 0 THEN
WHILE Where > 0 DO
BEGIN
WRITELN (Where : 3, '-', DB^.RecNo : 3, ': ',
DB^.READ ('NAME'), ' ', DB^.ReadD_ ('GEBOREN'));
Where := DB^.coNtinue;
END
ELSE
WRITELN ('Nicht gefunden !');
DisposeSearchRec (SR);
END; { IF Begriff <> '' THEN }
UNTIL (GetErr <> 0) OR (Begriff = '');
REPEAT
WRITELN;
WRITE ('Simpel-Suche Name <= ? (CR = Ende) ');
READLN (Begriff);
IF Begriff <> '' THEN
BEGIN
{ Hier die gew.nschte cpXXX-Konstante eintragen ! }
SR := NewSearchRec ('NAME', Begriff, CpLessEqual, Nil
);
Where := DB^.Search (SR);
IF Where > 0 THEN
WHILE Where > 0 DO
BEGIN
WRITELN (Where : 3, '-', DB^.RecNo : 3, ': ',
DB^.READ ('NAME'), ' ', DB^.ReadD_ ('GEBOREN'));
Where := DB^.coNtinue;
END
ELSE
WRITELN ('Nicht gefunden !');
DisposeSearchRec (SR);
END; { IF Begriff <> '' THEN }
UNTIL (GetErr <> 0) OR (Begriff = '');
DISPOSE (DB, CLOSE); { Index wird automatisch mit gel.scht ! }
END; { IF (GetErr = 0) AND ... }
WRITELN (MEMAVAIL);
WRITELN;
WRITE ('Weiter mit Taste ...');
READLN;
END. { PROGRAM Db11 }
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson