*freu*
Ich habs selber, nachdem ich grübelnd eingeschlafen bin, heute morgen mir den Kopf über einer Schüssel Cornflakes zerbrochen hab, und beinahe wahnsinnig geworden bin, kam folgender Algo raus:
Delphi-Quellcode:
var
i,j,k : Integer;
vSub1 : Array of String;
begin
q_Kategorien.SQL.Text := 'SELECT * FROM kategorien WHERE kat2 = 0';
q_Kategorien.Open;
q_Kategorien.First;
j := q_Kategorien.RecordCount;
SetLength(vSub1, j + 1);
for i := 1 to j do
begin
vSub1[i] := q_Kategorien.FieldValues['kat1'];
q_Kategorien.Next;
Memo1.Lines.Add(vSub1[i]);
end;
i := 1;
repeat
q_Kategorien.SQL.Text := 'SELECT * FROM kategorien WHERE kat1 = ' +
vSub1[i] + ' ORDER BY kat1, kat2';
q_Kategorien.Open;
if q_Kategorien.RecordCount = 1 then
begin
nSub1 := tv_Kategorien.Items.AddChild(nMain, q_Kategorien.FieldValues['bezeichnung']);
Inc(i,1);
end else begin
nSub1 := tv_Kategorien.Items.AddChild(nMain, q_Kategorien.FieldValues['bezeichnung']);
q_Kategorien.Next;
Inc(i,1);
for k := 1 to q_Kategorien.RecordCount - 1 do
begin
nSub2 := tv_Kategorien.Items.AddChild(nSub1, q_Kategorien.FieldValues['bezeichnung']);
q_Kategorien.Next;
end; // FOR K TO RECCOUNT - 1
end; // IF RECCOUNT = 1
until i = j + 1 // REPEAT UNTIL I = J
Das einzige ist: Ich musste die
DB-Struktur ändern. Es gibt jetzt 3 Integer-Felder:
kat1, kat2, kat3.
Diese beinhalten für sich die Zahl der Kategorie. Kat3 ist erstmal noch ungenutzt, da das einbinden einer 3. Ebene mich erstmal überfordert - da warte ich auf ne kreative Phase im Laufe des WE *g*
Danke für eure geschätzte Aufmerksamkeit