Autor Beitrag
H*nn*S
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 10.03.09 19:17 
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:

ausblenden volle Höhe Delphi-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 user profile iconKha: Delphi-Tags hinzugefügt
GlasshouseManor
Hält's aus hier
Beiträge: 10


Delphi Enterprise
BeitragVerfasst: Do 26.03.09 23:14 
Warum benutzt Du 3 verschiedene ADOconnections?

Ich würde nur eine benutzen und der dann verschiedene Datenbanken/Datenquellen zuweisen.