Announcement

Collapse
No announcement yet.

Access: Tabelle wird immer größer

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Access: Tabelle wird immer größer

    Hallo,
    ich habe eine Access - Tabelle, die wird immer größer.
    Ich lasse ein Feld in der ganzen Tabelle ändern.
    z.B. Feld1 : String von Wert 'A' auf Wert 'B' und die Tabelle ist viel größer als vorher. Mit der Reparatur ist Sie wieder klein. Wo liegt hier der Fehler? Kann man die Reparatur auch von Delphi aus aufrufen. Die Tabelle wir mit ADO gesteuert.

  • #2
    Matthias,<br>
    weshalb sich die Tabelle vergrößert weiß ich nicht. Aber wie man die mdb-Datei komprimiert,<br>
    das weiß ich.<br>
    Als erstes mußt Du die Typebibliothek für die Microsoft Jet and Recplicaion Objects importieren.<br>
    Dann steht dir das IJetEngine Interface zur Verfügung. Dieses Infaace hat die Methode:<br>
    procedure CompactDatabase(const SourceConnection: WideString; const Destconnection: WideString); safecall;<br>
    SourceConnection und DestConnection sehen folgendermaßen aus<br>
    'Data Source=D:\Delphi5\Test\Accsess\kbmap_2000_1.mdb';< br>
    Mit dieser Methode kann eine Access-Datenbank komprimiert werden. Der Haken an der Sache ist,<br>
    das die komprimierte Datenbank in einer neuen Datenabnk entsteht. D.h. Du mußt nach der Komprimierung die org. Datenbank löschen und dann den Dateinamen der komprimierten Datenbank ändern.<br>
    Jens Schumann<br&gt

    Comment


    • #3
      Eine Tabelle wird bei jeder Operation größer, da nur neue Informationen hinzugefügt werden, es werden keine Informationen überschrieben. Die Reperatur löscht dann diese verwaisten alten Einträge.<p>
      Schöne Grüße, Mario Noac
      Schöne Grüße, Mario

      Comment


      • #4
        Hallo Dietmar,<br>
        so sollte es auch ohne die Importierung der der Typbibliothek gehen.<br>
        Stichwort: Späte Bindung.<br>
        <pre>
        <font face="Verdana" size="1" color="#000000">unit Unit1;

        interface

        uses
        Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
        StdCtrls;

        type
        TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        private
        { Private-Deklarationen }
        public
        { Public-Deklarationen }
        end;

        var
        Form1: TForm1;

        implementation

        uses ComObj;

        {$R *.DFM}

        procedure TForm1.Button1Click(Sender: TObject);
        var
        JetRecplicaion : OleVariant;
        begin
        JetRecplicaion:=CreateOleObject('JRO.JetEngine');
        JetRecplicaion.CompactDatabase('Data Source=D:\Delphi5\Test\ADO\Blobtest_1\db2.mdb','Da ta Source=D:\Delphi5\Test\ADO\Blobtest_1\db2_comp.mdb ');
        end;

        end.</font>
        </pre>
        Jens Schumann<br&gt

        Comment

        Working...
        X