Das sehe ich nicht so, wenn ich mit
ADO arbeite, dann bekomme ich mit GetTableNames die Tabellennamen aus der Datenbank. Dabei ist es egal, ob es nun Oracle, Firebird,
MSSQL, Postgres, Ingres,
Access ... oder was weiß ich ist.
Durch das Ändern der Datenbankverbindung funktioniert das mit jeder Datenbank, auf die ich über
ADO zugreifen kann.
Andernfalls brauch' ich für jede Datenbank 'ne "Sonderlocke" und eine Datenbankunabhängigkeit geht recht schnell "den Bach runter".
@rokli
Delphi-Quellcode:
if ADOconnection1.Connected then // ist die Datenbankverbindung aktiv?
ADOconnection1.GetTableNames(combobox1.Items,false); // Dann die Tabellennamen (ohne die Systemtabellen) holen.
// Sie befinden sich dann in der Combobox.
y:=combobox1.Items.count; // Wieviel Tabellen haben wir bekommen?
for i := 0 to y-1 do begin // Einmal für jede Tabelle:
tab:=TMenuItem.create(MainMenu1); // Neuen Menüeintrag anlegen.
MainMenu1.items[2].add(tab); // Den den Menüeintrag 2 des Hauptmenüs als untergeorneten Menüpunkt zuordnen.
tab.caption:=combobox1.items[i]; // Der gerade erstellte Menüunterpunkt bekommt den TAbellennamen als Beschriftung
tab.tag:=i; // Dem Tag weisen wir die Index der Tabelle in der Combobox zu.
tab.OnClick:=erra1click; // Der neue Menüeintag bekommt eine Ereignisroutine zugewiesen.
// Ob hier die Zuweisung des Ereignisses, mit dem die Erstellung des Menüeintrages erfolgt, sinnvoll ist, darf allerdings bezweifelt werden ;-)
end;
Es wird also schlicht ein Untermenü erstellt, dass für jede Tabelle der Datenbank einen Menüeintrag enthält. Und die Menüeinträge bekommen halt auch eine OnClick-Ereignis zugewiesen. (Mit dem ein Untermenü erstellt wird, dass für ... zugewiesen. (Mit dem ... ))
Aber mit einer anderen OnClick-Methode wird das recht schnell durchaus sinnvoll.