Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.031 c
14-1091941670
Виктор П
2004-08-08 09:07
2004.09.05
Опрос: Рейтинг форум-клиентов.


14-1092566825
Хыыы
2004-08-15 14:47
2004.09.05
Оценка программы


14-1092776663
Cheater
2004-08-18 01:04
2004.09.05
Загадили природу....


1-1092820204
serg128
2004-08-18 13:10
2004.09.05
Как найти все MDI окна, а затем их все закрыть?


14-1092859865
Cobalt
2004-08-19 00:11
2004.09.05
Знатокам английского





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский