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?