Announcement

Collapse
No announcement yet.

MSAccess und Systemtabellen

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

  • MSAccess und Systemtabellen

    Hallo,
    weiss jemand wo im Access die Systemtabellen zu suchen sind ?

    MFG Karl

  • #2
    Hallo,

    so etwas gibt es nur in "echten" SQL-Datenbanken. Bei ACCESS würde am ehesten das <b>Catalog</b>-Objekt (ADOX) den Schema-Informationen der Systemtabellen der SQL-Datenbanken entsprechen

    Comment


    • #3
      Herr Kosch,
      Wo sind die Formulare oder die Query abgespeichert. Gibt es dafür spezielle System Tabellen

      Comment


      • #4
        Hallo,

        es gibt keine Systemtabellen, die man mit SQL einfach auslesen kann. Es gibt aber COM-Objekte (<b>Catalog</b>), über die man die Struktur der Datenbank inklusive aller dort gespeicherten Bestandteile (Tabellen, Index, Abfrage etc.) ermitteln kann.

        Wenn der Zugriff über ADO erfolgt, stellt <b>TADOConnection</b> die Methode <b>OpenSchema</b> zur Verfüng. Kann man nicht auf die <b>ADO Express</b>-Komponenten zurückgreifen, steht der direkte Zugriff auf die ADOX-Objekte offen. Das folgende Beispiel liest alle Tabellen aus dem Catalog aus:
        <pre>
        uses ADOX_TLB, ADODB_TLB;

        procedure TFormMain.ButtonShowTablesClick(Sender: TObject);
        var
        aConnection : _Connection;
        aCatalog : _Catalog;
        aTable : _Table;
        swConnString: WideString;
        iRecCount : Integer;
        i : Integer;
        begin
        StatusBar1.SimpleText := 'Recordset für SQL wird geöffnet....';
        // Step 1: Connection-Objekt
        aConnection:= CoConnection.Create;
        swConnString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
        'Data Source=C:\Database\dbdemos.mdb;' +
        'Persist Security Info=False';
        aConnection.Open(swConnString, '', '', -1);
        // Step 2: Catalog-Objekt
        aCatalog := CoCatalog.Create;
        aCatalog.Set_ActiveConnection(aConnection);
        iRecCount := aCatalog.Tables.Get_Count;
        ListBoxTableName.Items.Add(Format('%d Tabellen vorhanden',[iRecCount]));
        for i := 0 to iRecCount - 1 do
        begin
        aTable := aCatalog.Tables.Item[i];
        ListBoxTableName.Items.Add(aTable.Name);
        end;
        aConnection.Close;
        end;

        end
        </pre>
        In Delphi muss man dazu einmalig über <i>Projekt | Typbibliothek importieren</i> dafür sorgen, dass von Delphi für ADO (Microsoft ActiveX Data Objects 2.x) und ADOX (Microsoft ADO Ext. 2.1 for DDL and Security) die entsprechenden TLB.pas-Units erzeugt werden

        Comment


        • #5
          Herzlichen Dank das hat mir sehr geholfen

          Comment

          Working...
          X