Einzelnen Beitrag anzeigen

Ayumi

Registriert seit: 20. Apr 2005
18 Beiträge
 
#1

TreeView - Daten gruppieren

  Alt 4. Aug 2005, 12:49
Hallo,
ich habe eine Funktion, die Daten aus der DB ausliest. Das Auslesen aus der DB und Anzeigen im TreeView funktioniert soweit.
Im TreeView sehen meine Daten folgendermaßen aus:
2000
--Xyz
----Test
2000
--Abc
----Test1
2000
--Abc
----Test2

Ich möchte aber, dass es folgendermaßen aussieht
2000
--Xyz
----Test
--Abc
----Test1
----Test2

Kann mir da jemand weiter helfen

Vielen Dank im Voraus
Ayumi


Delphi-Quellcode:
function TDataModule1.fuelleTreeView( var TreeView1: TTreeView):boolean;
var
i : integer;
VkampagneRec : PKampagneRec;
vJahrTreeNode : TTreeNode;
vKundeTreeNode : TTreeNode;
vProduktTreeNode : TTreeNode;
vKampagneTreeNode : TTreeNode;
vMutterTreeNode : TTreeNode;

begin
try
   vMutterTreeNode := nil;
  begin
  with ADODataSet1 do
  begin
    close;
    CommandType := cmdText;
    CommandText := 'select ' +
                      'decode (to_char(max(a.sttmact), ''yyyy''), '''', ''unbekannt'', to_char(max(a.sttmact), ''yyyy'')) Jahr, ' +
                      'c.advert, c.product, c.ccamp, c.icamp ' +
                      'from campaign c, actions a ' +
                      'where c.ccamp = a.ccamp(+) ' +
                      'group by c.ccamp, c.icamp, c.product, c.advert ' +
                      'order by jahr, c.advert, c.product, c.icamp';
    Open;
    First;
  end;

  while not ADODataSet1.Eof do
   begin
    new(vKampagneRec);
    //datum, kunde, produkt, kampagne aus der Datenbankselektion lesen
    vKampagneRec^.rec_Jahr := ADODataSet1.FieldByName('Jahr').AsString;
    vKampagneRec^.rec_Kunde := ADODataSet1.FieldByName('advert').AsString;
    vKampagneRec^.rec_produkt := ADODataSet1.FieldByName('product').AsString;
    vKampagneRec^.rec_kampagne := ADODataSet1.FieldByName('icamp').AsString;


   vJahrTreeNode:=TreeView1.Items.AddObject(vMutterTreeNode,ADODataSet1.FieldByName('Jahr').AsString, vkampagneRec);
   vKundeTreeNode := TreeView1.Items.AddChildObject(vJahrTreeNode, ADODataSet1.FieldByName('advert').AsString, vKampagneRec);
   vProduktTreeNode := TreeView1.Items.AddChildObject(vKundeTreeNode, ADODataSet1.FieldByName('product').AsString, vKampagneRec);
   vKampagneTreeNode := TreeView1.Items.AddChildObject(vProduktTreeNode, ADODataSet1.FieldByName('icamp').AsString, vKampagneRec);
    ADODataSet1.next;
   end;
   result := true;
 end;
except
  begin
  result := false;
 end;
end;
end;
  Mit Zitat antworten Zitat