Autor Beitrag
ensacom1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Di 24.03.09 15:24 
Hallo, ich habe eine MySQL-Datenbank mit zwei Tabellen

Tabelle tipps_kategorien
id
titel


Tabelle tipps
id
katid
titel

die katid in der Tabelle tipps ist die id in der Tabelle tipps_kategorien

Nun nöchte ich in einer TreeView alle titel aus der Tabelle tipps_kategorien anzeigen lassen.
Gleichzeitig sollen für jeden Titel die zugehörigen titel aus der Tabelle tipps untergeordnet werden.

Das mit der Anzeige der titel aus der Tabelle tipps_kategorien mache ich so, was auch funktioniert.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Button2Click(Sender: TObject);
var
  nc: TTreeNode;
begin
  with ClientDataSet do
  begin
    sql.text:='Select * from tipps_kategorien';
    open;
  end;

  TreeView1.items.BeginUpdate;
  ClientDataSet.first;
  while not ClientDataSet.eof do
  begin
    nc := TreeView1.Items.AddChild(nil, ClientDataSet.FieldByName('titel').asString);
    ClientDataSet.next;
 end;
 TreeView1.items.Endupdate;
end;


Kann mir einer helfen das ich endlich die untergordneten Einträge rein bekomme?

Danke
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 24.03.09 15:29 
wo liegt genau das Problem?

Untereinträge bekommst Du z.B. so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var node : TTreeNode;
begin

  node := TreeView1.Items.Add(nil, 'root');
    TreeView1.Items.AddChild(node, 'Untereintrag 1');
    TreeView1.Items.AddChild(node, 'Untereintrag 2');
    TreeView1.Items.AddChild(node, 'Untereintrag 3');

end;

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
ensacom1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Di 24.03.09 15:43 
Ja ich weiß das ich die so rein bkomme.
Ich schaffe das mit der Schleife nur nicht. Entweder ich habe keinen untereintrag oder nur den ersten.

Wie genau muss das aussehen?
Ich denke ja mal das es schon, wie ich es schon versucht habe, zwei ineinander verschachtelte Schleifen sein müssen

So in der Art

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:
procedure TForm1.Button2Click(Sender: TObject);
var
  nc: TTreeNode;
  i: integer;
begin
  with ClientDataSet do
  begin
    sql.text:='Select * from tipps_kategorien';
    open;
  end;

  TreeView1.items.BeginUpdate;
  ClientDataSet.first;
  while not ClientDataSet.eof do
  begin
    nc := TreeView1.Items.AddChild(nil, ClientDataSet.FieldByName('titel').asString);

//Untereinträge
    with ClientDataSet2 do
    begin
      sql.text:='Select titel from tipps WHERE katid = '+ClientDataSet.FieldByName('id').asString;
      open;
    end;
    while not ClientDataSet2.eof do
    begin
      TreeView1.Items.AddChild(nc, ClientDataSet2.FieldByName('titel').asString);
      ClientDataSet2.Next;
    end;

    ClientDataSet.next;
  end;
  TreeView1.items.Endupdate;
end;
ensacom1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Di 24.03.09 15:47 
Schon mrkwürdig, jetzt geht es plötzlich.
Kann trotzdem mal einer über den Code schauen ob der so in Ordnung ist?

Danke
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 24.03.09 15:48 
Sieht doch schon ganz gut aus. Was für einen Fehler bekommst Du? Und an welcher Stelle?

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:
procedure TForm1.Button2Click(Sender: TObject);
var
  nc: TTreeNode;
  i: integer;
begin
  with ClientDataSet do
  begin
    sql.text:='Select * from tipps_kategorien';
    open;
  end;

  TreeView1.items.BeginUpdate;
  ClientDataSet.first;
  while not ClientDataSet.eof do
  begin
    nc := TreeView1.Items.AddChild(nil, ClientDataSet.FieldByName('titel').asString);

//Untereinträge
    with ClientDataSet2 do
    begin
      sql.text:='Select titel from tipps WHERE katid = '+ClientDataSet.FieldByName('id').asString;
      open;
    end;
    while not ClientDataSet2.eof do
    begin
      TreeView1.Items.AddChild(nc, ClientDataSet2.FieldByName('titel').asString);
      ClientDataSet2.Next;
    end;
    {hier fehlt ein ClientDataSet2.Close}

    ClientDataSet.next;
  end;
  TreeView1.items.Endupdate;
end;

Und ganz generell würde ich die Dinge richtig bezeichnen. "ClientDataSet2" ist nicht gerade ein sprechender Namen, genausowenig wie "TreeView1".

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
ensacom1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Di 24.03.09 16:26 
Dankle für den Tipp mit den richtigen Bezeichnern.
Mache ich normalerweise auch, nur nie bei den DB-Komponenten.
Werde es mir aber angewöhnen.

Ich bekomme keinen Fehler mehr.
Dafür habe ich eine andere Frage.

Ist es möglich die Titel anzuzeigen aber auch die ID mit jedem Titel zu speichern?
So könnte ich dann ohne großen Aufwand weitere Daten anhand der ID aus der DB laden.

Danke
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Di 24.03.09 16:35 
neue Frage neuer Thread please und den hier bitte schließen...

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)