Вниз
Скачать: CL | DM;

Отчет в виде дерева   Найти похожие ветки 

← →
Mitrofan   (2004-08-11 13:39) [0]

Имеется две таблицы. Первая таблица хранит дерево в виде
TableTree (
Id,
Parent_Id,
Name
)
Имеется таблица номенклатуры
TableNomenklatura (
Id,
Name,
....
Item_Ptr
)

Как вывести в отчете список номенклатуры по группам.
Т.е. что то в виде таком:
Номенклатура
 Метал /* это элемент дерева - группа */
   Железо  /* это элемент дерева - группа */
     Железо1 /* это номенклатура */
     Железо2
     Железо3
   Алюминий
     Алюминий1
     Алюминий2
 Стекло
   ...


← →
Соловьев ©   (2004-08-11 15:02) [1]

СУБД?


← →
Mitrofan   (2004-08-11 15:10) [2]

Firebird 1.5.1


← →
Соловьев ©   (2004-08-11 15:44) [3]

http://ibase.ru/develop.htm - Древовидные структуры


← →
Shade   (2004-08-11 21:56) [4]

Я не знаю поможет тебе или нет, но я вот я недавно только что то подобное писал.

//----------------------------------------------------------Рекурсивная пробежка
procedure RecurseRun( id: integer );
var
 TempQuery: TIBQuery;
begin
 with F_Reports do begin
   ord := ord + 1;
   //Добавляем в запрос новый элемент
   Query.SQL.Add( "SELECT " + IntToStr( ord ) + " AS ord," );
   Query.SQL.Add( "TREE.MARKING, TREE.NAME," );
   Query.SQL.Add( "ROUTE.DATA" );
   Query.SQL.Add( "FROM TREE, ROUTE" );
   Query.SQL.Add( "WHERE TREE.ID=" + IntToStr( id ) + " AND TREE.ID=ROUTE.ID_ITEM" );
   Query.SQL.Add( "UNION" );

   try
     TempQuery := TIBQuery.Create( F_DM );
     TempQuery.Database := F_DM.DatabaseMain;
     TempQuery.Close;
     TempQuery.SQL.Clear;
     TempQuery.SQL.Add( "SELECT ID FROM TREE WHERE PARENT=  " + IntToStr( id ) );

     TempQuery.Open;
     TempQuery.First;
     while not TempQuery.Eof do begin
       RecurseRun( TempQuery.FieldByName( "ID" ).AsInteger );                  // посылаем на рекурсию
       TempQuery.Next;
     end;
   finally
     TempQuery.Free;
   end;
 end;
end;

Посылаем на пробежку:

 Query.Close;
 Query.SQL.Clear;
 ord := 0;
 id := TAsTreeItem( F_Main.Tree.Selected.Data ).Id;
 RecurseRun( id );
 Query.SQL.Delete( Query.SQL.Count - 1 );
 Query.Open;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.021 c
14-1092750536
peypivo
2004-08-17 17:48
2004.09.05
Кондиционер


14-1092849164
Андрюха-1
2004-08-18 21:12
2004.09.05
Сколько стоит открыть свою фирму...


1-1092750107
Labert
2004-08-17 17:41
2004.09.05
TClass


11-1079997815
KisaNetik
2004-03-23 02:23
2004.09.05
Ошибка при работе с ListEdit


6-1088778533
Прог
2004-07-02 18:28
2004.09.05
Работа с почтой по pop3




   Наверх