Einzelnen Beitrag anzeigen

omata

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

Re: MSSQL - Problem mit Rekursiver SP

  Alt 28. Jan 2008, 19:32
Hier mal ein Beispiel mit ADO...

Delphi-Quellcode:
procedure fillTreeview(Tree:TTreeview; ADOConnection:TADOConnection);

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

var ADOStoredProc:TADOStoredProc;
begin
  ADOStoredProc:=TADOStoredProc.Create(nil);
  try
    Tree.Items.BeginUpdate;
    Tree.Items.Clear;
    ADOStoredProc.Connection:=ADOConnection;
    ADOStoredProc.ProcedureName:='GetSortedSubTree;1';
    ADOStoredProc.Parameters.Refresh;
    ADOStoredProc.Parameters.ParamByName('@NodeID').Value:=1;
    ADOStoredProc.Open;
    fill(ADOStoredProc.FieldByName('depth').AsInteger, nil, ADOStoredProc);
    ADOStoredProc.Close;
  finally
    ADOStoredProc.free;
    Tree.Items.EndUpdate;
  end;
end;
Gruss
Thorsten
Angehängte Dateien
Dateityp: zip dbtree_816.zip (29,1 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat