Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
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
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