Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#5

AW: MainMenü+combobox in dbgrid öffnen

  Alt 25. Jan 2017, 17:13
P.S.
ich empfehle in solchen Fällen immer die Abfrage der entsprechenden System-Views oder Aliasse z.B. ALL_TABLES in Oracle
http://www.java2s.com/Tutorial/Oracl...Dictionary.htm
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.
  Mit Zitat antworten Zitat