Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: 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 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.043 c
3-1092032920
Korvin
2004-08-09 10:28
2004.09.05
Изменение списка полей в TTable


14-1092755313
pavel_pavel
2004-08-17 19:08
2004.09.05
Мож кто пришлет СМС?


6-1088507166
AVK
2004-06-29 15:06
2004.09.05
Проверка соединения, пинг.


14-1091711935
Piter
2004-08-05 17:18
2004.09.05
Magic Forum beta8 - клиент форумов "Мастера Дельфи" и "Дремучие"


3-1092204839
SeZuka
2004-08-11 10:13
2004.09.05
Проблема с русскими именами пользователей в BDE