AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualTreeview

Ein Thema von schuetze09 · begonnen am 19. Nov 2004 · letzter Beitrag vom 19. Nov 2004
 
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#1

VirtualTreeview

  Alt 19. Nov 2004, 07:20
Hallo,

ich möchte eine Baumstrukur mit dem VirtualTreeview aus einer DB darstellen, dazu habe ich bereits
VirtualTreeView und Baumstruktur
gelesen.bei mir übertragen und es funktioniert auch soweit ganz gut.
Leider haben ich nicht zwei "Ebenen" sondern drei. Und hier liegt mein Problem, die dritte krieg ich einfach nicht hin...

Hier mein Code:

Delphi-Quellcode:
procedure SelectWID_VST(VST: TVirtualStringTree);
var
  ADODataSet, ADODataSet_sw, ADODataSet_oc: TADODataSet;
  TreeObject: TTreeDataClass;
  Wurzel, Wurzel_oc: PVirtualNode;
  rs_sw, rs_oc: _Recordset;

function AddVSTObject(avst: TCustomVirtualStringTree; aNode: PVirtualNode; aObject: TObject): PVirtualNode;
var
  Data: PTreeData;
begin
  Result := avst.AddChild(aNode);
  avst.ValidateNode(Result, False);
  data := avst.GetNodeData(Result);
  data^.FObject := aObject;
end;

begin
  ADODataSet:= TADODataSet.Create(nil);
  ADODataSet.Connection:=DataModule_DBConnect.ADOConnection1;
  ADODataSet_sw:= TADODataSet.Create(nil);
  ADODataSet_sw.Connection:=DataModule_DBConnect.ADOConnection1;
  ADODataSet_oc:= TADODataSet.Create(nil);
  ADODataSet_oc.Connection:=DataModule_DBConnect.ADOConnection1;
  VST.BeginUpdate;
  VST.NodeDataSize:= SizeOf(TTreeData);
  VST.DeleteChildren(VST.RootNode, true);
  try
    ADODataSet.CommandText:='Select distinct(tbl_w_daten.fk_w_id), tbl_w_daten.username, (tbl_umgebung.env || '+''' - '''
                           +' || tbl_umgebung.beschreibung)as env from tbl_w_daten, tbl_umgebung, tbl_w_id where tbl_w_id.fk_env_id '
                           +'= tbl_umgebung.pk_env_id and tbl_w_id.pk_w_id = tbl_w_daten.fk_w_id order by tbl_w_daten.fk_w_id';
    ADODataSet.Open;
    rs:=ADODataSet.Recordset;
    while not rs.EOF do
    begin
      TreeObject:= TTreeDataClass.Create;
      TreeObject.WID:=FormatFloat('000000', rs.Fields['FK_W_ID'].Value);
      TreeObject.ICON:=0;
      Wurzel:= AddVSTObject(VST, Nil, TreeObject);
      ADODataSet_sw.CommandText:='select tbl_w_daten.fk_w_id, tbl_application.pk_sw_product_id, tbl_application.pk_sw_product_id, tbl_application.sw_product, tbl_w_art.w_art from tbl_application, tbl_w_daten, tbl_w_art where tbl_w_daten.fk_w_id='
                     +VarToStr(rs.Fields['FK_W_ID'].Value)+' and tbl_w_daten.fk_sw_product_id = tbl_application.pk_sw_product_id'
                     +' and tbl_w_daten.fk_w_art_id = tbl_w_art.pk_w_art_id';
      ADODataSet_sw.open;
      rs_sw:=ADODataSet_sw.Recordset;
      while not rs_sw.EOF do
      begin
        TreeObject:= TTreeDataClass.Create;
        TreeObject.ICON:=1;
        Try
          If VarToStr(rs_sw.Fields['sw_product'].Value) > 'Then
          Begin
            TreeObject.SW:=VarToStr(rs_sw.Fields['sw_product'].Value);
            TreeObject.USER:=VarToStr(rs.Fields['USERNAME'].Value);
            TreeObject.ART:=VarToStr(rs_sw.Fields['W_ART'].Value);
            TreeObject.ENV:=VarToStr(rs.Fields['ENV'].Value);

            ADODataSet_oc.CommandText:='select cm_no from tbl_cm_no where fk_w_id='+VarToStr(rs.Fields['FK_W_ID'].Value)
                                      +' and fk_sw_product_id='+VarToStr(rs_sw.Fields['PK_SW_PRODUCT_ID'].Value);
            ADODataSet_oc.Open;
            rs_oc:=ADODataSet_oc.Recordset;

            Wurzel_oc:=AddVSTObject(VST, VST.AddChild(Wurzel, TreeObject), nil);
            while not rs_oc.EOF do
            begin
              TreeObject:=TTreeDataClass.Create;
              TreeObject.ICON:=1;
              try
                if VarToStr(rs_oc.Fields['CM_NO'].Value) > 'then
                begin
                  TreeObject.OC:=VarToStr(rs_oc.Fields['CM_NO'].Value);
                  AddVSTObject(VST, Wurzel_oc, TreeObject);
                end;
              except
                TreeObject.Free;
              end;
              rs_oc.MoveNext;
            end;
            ADODataSet_oc.Close;
            rs_oc.Close;
            AddVstObject(VST,wurzel, TreeObject);
          end;
        except
          TreeObject.Free;
        end;
        rs_sw.MoveNext;
      end;
      ADODataSet_sw.Close;
      rs_sw.Close;
      rs.MoveNext;
    end;
  except
    on e : Exception do
    begin
      MDialog(e.Message,mtError,[mbOK]);
    end;
  end;
  ADODataSet.Close;
  ADODataSet.Free;
  VST.EndUpdate;
kann mir bitte jemand helfen?

MfG
schuetze09
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz