Einzelnen Beitrag anzeigen

siles

Registriert seit: 14. Jan 2008
34 Beiträge
 
#9

Re: MSSQL - Problem mit Rekursiver SP

  Alt 28. Jan 2008, 18:15
Zitat von omata:
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
Vielen Dank Thorsten. Ich sehe zwar auf Anhieb keinen wirklichen Unterschied zum Code den du bei der SP verwendet hast, die den gesamten Tree liefert, aber vielleicht komme ich morgen darauf.

Ach ja etwas musste ich andes machen und zwar konnte ich nicht die DBExpress Komponenten verwenden..das SimpleDataSet meldet einen Fehler wegen des Cursors.
Habe stattdessen die Ado Komponenten benutzt und diese direkt im GUI erstellt und nicht im Code. Denke aber nicht dass das etwas ausmacht.
  Mit Zitat antworten Zitat