Hallo Justin,
da hat Du noch einiges vor Dir
Hier mal ein überarbeiteter Code, der wirklich läuft:
Delphi-Quellcode:
procedure TForm2.erra1Click(Sender: TObject);
var
tab:TMenuItem;
i:integer;
y:Integer;
begin
MainMenu1.items.Clear;
// alle Menüeinträge weg
combobox1.items.Clear;
// Combobox leer
ADOConnection1.connected :=true;
// Datenbankverbindung öffenen (vielleicht noch prüfen, obs geklappt hat?)
// ADOtable1.active:=true; // das setzt auch die ADOConnection mit der Du verbunden hast auf true
// ADOConnection2.connected:=false;
// ADOConnection3.connected:=false;
// hier verwendest Du eine Query ...
ADOQuery1.Connection :=ADOconnection1;
// wie sieht denn der SQL aus? Benutzt Du die eigentlich? ist hier erst mal überflüssig!
// Tabelle vorbereiten
ADOTable1.Connection := ADOConnection1;
DataSource1.DataSet := ADOTable1;
// Grid vorbereiten
DBGrid1.DataSource := DataSource1;
// und nun werden die Daten im Grid angezeigt
ADOTable1.Open;
// den folgenden Teil verstehe ich garnicht
// if ADOconnection1.Connected=true then
// ADOconnection1.GetTableNames(combobox1.Items,false);
// y:=combobox1.Items.count;
// for i := 0 to y-1 do begin
// tab:=TMenuItem.create(MainMenu1);
// MainMenu1.items[2].add(tab);
// tab.caption:=combobox1.items[i];
// tab.tag:=i;
// tab.OnClick:=erra1click; // Rekursion?
// end;
end;
procedure TForm2.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
// Programm Ende:
// Tabelle schließen
ADOTable1.Close;
// falls benutzt auch Query schließen
ADOQuery1.Close;
// Datenbank abhängen
ADOConnection1.Connected := false;
end;
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS
SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney