Главная страница
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.024 c
3-1092117093
AleKo
2004-08-10 09:51
2004.09.05
FastReport ExportTo


3-1091801616
Руслан
2004-08-06 18:13
2004.09.05
Как некоторые строки в DBGrid выделить жирным шрифтом?


3-1092310338
stud
2004-08-12 15:32
2004.09.05
опять картинки в базу...


3-1092273424
Ted
2004-08-12 05:17
2004.09.05
База *.dbf


3-1092141651
Diman
2004-08-10 16:40
2004.09.05
Как записать данные из DBGrid в Excel-формат?