[<<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