Hi Leute,
bin ein relativer Delphi Anfänger, wenn ich mich mit manchen von euch vergleiche

.
Ich hab gleich mal eine Frage. Und zwar soll ich, schul-bedingt, ein Programm schreiben was verschiedene Datenbanken laden kann, die jedoch alle eine eigene ADOConnection bestizen, und ich dann mir die Tabellen in einer DBGrid anzuschauen. Die Auswahl erfolgt hier über eine Combobox oder im MainMenu unter "Tabellen".
Soweit läuft auch alles wie es soll, nur bekomme ich in völlig unterschiedlichen Abständen 2 verschiedene Fehlermeldungen:- häufigste ist "Zugriffsverletzung bei Adresse xxxx im Modul xxxx"
- die nächste ist "ungültige Typenumwandlung" --> hier zeigt er die Codezeile: "with Sender as TMenuItem do begin" an
Nun habe ich schon hier im Forum und auch bei Google gesucht und habe leider keine für mich passende Lösung gefunden.
Ich gebe euch auch mal den Quelltext. Ich erwarte nicht das hier mir alles komplett richtig hinschreibt, sondern mir zeigt wo meine Fehler liegen und warum diese so unregelmäßig auftreten.
Quelltext:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53:
| procedure TForm1.delete; var i,y: integer; begin y:=combobox1.Items.Count; combobox1.Items.Clear; for i:=0 to y-1 do begin MainMenu1.Items[1].Items[0].Free; end; end;
procedure TForm1.terra1Click(Sender: TObject); var i,y: integer; tab: TMenuItem; begin DataModule2.ADOConnection2.Connected:=false; DataMOdule2.ADOConnection3.Connected:=false; DataModule2.ADOConnection1.Connected:=true; ADOQuery1.Connection:=DataModule2.ADOConnection1; ADOTable1.Active:=false; ADOTable1.Connection:=DataModule2.ADOConnection1; delete; if DataModule2.ADOConnection1.Connected=true then DataModule2.ADOConnection1.GetTableNames(combobox1.items, false); y:=combobox1.Items.Count; for i:=0 to y-1 do begin tab:=TMenuItem.Create(MainMenu1); MainMenu1.Items[1].Add(tab); tab.Caption:=combobox1.Items[i]; tab.Tag:=i; tab.OnClick:=terra1Click; end; with Sender as TMenuItem do begin ADOQuery1.Close; ADOQuery1.Active:=false; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from '+Combobox1.Items[Tag]+';'); ADOQuery1.Open; ADOQuery1.Active:=true; Edit1.Text:=MainMenu1.Items[1].Items[Tag].Caption; ADOTable1.TableName:=Edit1.Text; ADOTable1.Active:=true; end; end;
procedure TForm1.ComboBox1Change(Sender: TObject); begin ADOTable1.Active:=false; Edit1.Text:=Combobox1.Items[Combobox1.Itemindex]; ADOTable1.TableName:=Edit1.Text; ADOTable1.Active:=true; end;
end. |
Moderiert von
Kha: Delphi-Tags hinzugefügt