Einzelnen Beitrag anzeigen

siles

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

Kategorisierte Struktur sortieren (stored procedure/Cursor)

  Alt 22. Apr 2008, 13:30
Datenbank: MsSQL • Version: 2000 • Zugriff über: Ado Komponenten
Hallo!
Mein Gehirn ist gerade ziemlich abgeraucht, vermutlich wäre es gar nicht soo schwer aber ich komme nicht darauf
Problem:

Ich habe eine Kategorien Datenbank (id, name, pid). Wird normalerweise in Delphi mit einer TreeView angezeigt.
Nun möchte ich jedoch alle Kategorien in eine Combobox bringen und zwar schön in der Reihenfolge, wie sie auch in der TreeView angezeigt wird. Sprich:

Oberkategorie 1
--K1
----U1
--K2
-----U2
Oberkategorie 2
....etc

Bei der TreeView geht das vollautomatisch, da muss nur die ID und PID angegeben werden (DynamicDBTreeView)

Ich habe igrendwo im Internet, vielleicht sogar hier bei DP eine Stored Procedure gesehen, die jede Unterkategorie sortiert anzeigt:

SQL-Code:
CREATE Procedure ListSubTree (@cat_id int)
as

declare @ChildID int
declare @Table Table (
  ID INT,
  PID INT,
  NAME VARCHAR(1000)
)

-- 1.Zeile in die Tabelle
 
insert into @Table
  select cat_id, cat_pid, cat_name from cate where cat_id = @cat_id

Declare c Cursor local for select ID from @Table
open c
fetch next from c into @ChildID
while @@Fetch_status = 0 begin

-- Mit jedem Schleifendurchlauf werden in einem Abwasch ALLE Kindknoten eingefügt

  insert into @Table
    select cat_id, cat_pid, cat_name from cate where cat_pid = @ChildID
  fetch next from c into @ChildID
end
close c
deallocate c
select * from @Table
GO
Mit "exec listsubtree 1" bekomme ich dann auch alle Unterkategorien von der Kategorie mit der ID 1, allerdings nicht so sortiert wie oben beschrieben, sondern so

Oberkategorie 1
--K1
--K2
----U1
----U2
....etc

Hat einer ne Ahnung wie ich das erreichen kann?
  Mit Zitat antworten Zitat