Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie komprimiere ich eine Datenbank "Paradox" "DB" (https://www.delphipraxis.net/7798-wie-komprimiere-ich-eine-datenbank-paradox-db.html)

Frank2269 21. Aug 2003 17:05


Wie komprimiere ich eine Datenbank "Paradox" "
 
Hallo, kann mir irgendjemand sagen wie man eine Datenbank komprimiert?

Bei VB gibt es die Möglichkeit, bei Delphi habe ich bisher nichts gefunden.

Ich arbeite zu Zeit an einer Anwendung wo ich feststellte des die Datenbank zu explodieren scheint.

In dieser werden zwischen 100 - 200 Datensätze Tägl. gespeichert.

Vielen Dank für Eure Mühe

Frank

kiar 21. Aug 2003 18:06

Re: Wie komprimiere ich eine Datenbank "Paradox" &
 
paradox kennt einen packbefehl meines erachtens nicht. du kanst es nur folgender maßen machen
tempdb anlegen
alle daten in tempdb
hauptdb löschen und danach wieder anlegen
daten von temp -> haupt und dann temp löschen

dringend anzuraten,wenn datenpflege erforderlich ist, auf eine sql-db umzusteigen

raik

Duffy 21. Aug 2003 19:17

Re: Wie komprimiere ich eine Datenbank "Paradox" &
 
Hallo Frank2269,
diese Funktion sollte Dir weiterhelfen. Der Ursprungscode stammt von Andreas Kosch aus dem Buch Delphi 3 Datenbankentwicklung (ISBN 3-7723-4033-4)
Delphi-Quellcode:
function PackTable(var Table: TTable): Boolean;
var
  aCURProps: CURProps;
  aCRTblDesc: CRTblDesc;
  aHDBIDB: HDBIDB;
  OldExclusive: Boolean;
begin
  Result := False;

  with Table do
  begin
    OldExclusive := Exclusive;
    Close;
    Exclusive := True;
    Open;

    Check(DbiGetCursorProps(Handle, aCURProps));

    case aCURProps.iSeqNums of
      // dBASE
      0: begin
           Check(DbiPackTable(DBHandle, Handle, nil, nil, True));
           Result := True;
         end;
      // Paradox
      1: begin
           Close;
           FillChar(aCRTblDesc, SizeOf(aCRTblDesc), #0);
           with aCRTblDesc do
           begin
             StrPCopy(szTblName, Table.TableName);
             bPack := True;
             iFldCount := 0;
           end;
           Check(DbiOpenDatabase(nil, nil, DbiREADWRITE, DbiOpenShared, nil,
                                 0, nil, nil, aHDBIDB));
           Check(DbiSetDirectory(aHDBIDB, PChar(Session.NetFileDir)));
           Check(DbiDoRestructure(aHDBIDB, 1, @aCRTblDesc, nil, nil, nil, False));
           Result := True;
         end;
    else
      begin
      end;
    end;
    Close
    Exclusive := OldExclusive;
    Open;
  end;
end;
bye

kiar 21. Aug 2003 19:32

Re: Wie komprimiere ich eine Datenbank "Paradox" &
 
das scheint zu gehen. diese variante kannte ich nicht. ich dachte bisher, das die pack methode nur auf dbase verwendet werden kann.


wieder was gelernt :bouncing4:

Frank2269 22. Aug 2003 08:47

Re: Wie komprimiere ich eine Datenbank "Paradox" &
 
Hallo Duffy,

habe deinen Code probiert Funktioniert einfach klasse.

Sollte man in die Codelib aufnehmen.

Gruß

Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz