Форум: "Базы";
Текущий архив: 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.044 c