Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: MSSQL - Problem mit Rekursiver SP

  Alt 28. Jan 2008, 19:08
Hier mal ein Beispiel...

Delphi-Quellcode:
procedure fillTreeview(Tree:TTreeview; SQLConnection:TSQLConnection);

  procedure fill(Depth:integer; ANode:TTreeNode; SDS:TSimpleDataSet);
  var abbruch:boolean;
      Node:TTreeNode;
  begin
    abbruch:=false;
    while not SDS.Eof and not abbruch do begin
      Node:=Tree.Items.AddChild(
        ANode,
        SDS.FieldByName('nodename').AsString
      );
      SDS.Next;
      if SDS.FieldByName('depth').AsInteger > Depth then
        fill(Depth+1, Node, SDS);
      if SDS.FieldByName('depth').AsInteger < Depth then
        abbruch:=true;
    end;
  end;

var SDS:TSimpleDataSet;
begin
  SDS:=TSimpleDataSet.Create(nil);
  try
    Tree.Items.BeginUpdate;
    Tree.Items.Clear;
    SDS.Connection:=SQLConnection;
    SDS.DataSet.CommandType:=ctStoredProc;
    SDS.DataSet.CommandText:=
      'GetSortedSubTree';
    SDS.DataSet.ParamByName('nodeid').AsInteger:=1;
    SDS.Open;
    fill(SDS.FieldByName('depth').AsInteger, nil, SDS);
    SDS.Close;
  finally
    SDS.free;
    Tree.Items.EndUpdate;
  end;
end;
Aufruf...
  fillTreeview(TreeView, SQLConnection); Gruss
Thorsten
  Mit Zitat antworten Zitat