Страница 1 из 1
Иерархический список на основе 2-ух таблиц
Добавлено: 15 июн 2005, 00:33
Anton A Bobylev
Помогите разобраться
Есть 2 таблицы: t1 и t2
t1:
field_11 | field_12
----------------------
1 | A
2 | B
3 | C
----------------------
t2:
field_21 | field_22
----------------------
1 | AA
1 | AB
2 | BA
2 | BB
3 | CA
3 | CB
3 | CC
----------------------
Требуется фейс:
A
|
---- AA
|
---- AB
B
|
----BA
..... ну и так далее
Чердак сломал

не получается. С одной таблицей вроде ясно,
а с двумя ???? Поделитесь плиз опытом
Добавлено: 15 июн 2005, 10:36
stray
внешний по первой, внутренний по второй - не подходит?
Добавлено: 15 июн 2005, 11:42
Anton A Bobylev
Все это так, только с подцепкой несовсем ясно
Точно должно быть
t1.field_11 == t2.field_21 and ???
и оброботать события
cmTreeTop: {???}
cmTreeDown : {???}
cmTreeTop: {???}
в этом вся загвоздка
Добавлено: 23 июн 2005, 13:57
Ged
Нечто вроде этого
Код: Выделить всё
interface McGroupMc 'Мат.ценности по группам';
Show at (8,4,88,24);
Table STRUCT TreeMC ""
(
nRec : comp ,
Name : String[40] ,
NameGr : String[40] ,
cRec :comp,
Node :Word // Признак группы
)
With Index
(
main01 = nRec,
main02 = cRec+Node,
main03 = Node
)
;
Var
CurOwner:Comp;
CurNode :Word;
Create view TreeView as
Select
TreeMC.*
from
TreeMC,
TreeMC TreeMC1
Where
((
TreeMc.Nrec == TreeMC1.Crec
And
TreeMC.Node >> TreeMC1.Node
And
CurOwner == TreeMc.cRec
))
;
TabbedSheet right b1;
Tree tGrMc 'Дерево';
Fields
TreeMC.Name 'Матценности';
! TreeMC.Node 'Узел': [1];
TreeMC.NameGr 'Группа';
End;
Screen screenGrMc 'Окно';
Fields
TreeMC.Name;
! TreeMC.Node;
TreeMC.NameGr;
<<
Матценности: .@@@@@@@@@@@@@@@@@@
Группа : .@@@@@@@@@@@@@@@@@@
>>
End;
End;
HandleEvent
cmInit:
{
_LOOP GroupMc
{
ClearBuffer(#TreeMC);
TreeMC.Nrec:=GroupMC.Nrec;
TreeMC.Name:=GroupMC.Name;
TreeMC.NameGr:='';
TreeMC.Crec:=0;
TreeMc.Node:=1;
Insert Current TreeMC;
}
_LOOP KatMc Where ((KatMC.cGroupMC == GroupMC.Nrec))
{
ClearBuffer(#TreeMC);
// TreeMC.Nrec:=40000000000000h+KatMc.Nrec;// Иначе при равенстве Nrec будет
// зацикливание.
TreeMC.Nrec:=KatMc.Nrec;
TreeMC.NameGr:=GroupMC.Name;
TreeMC.Name:=KatMc.Name;
TreeMC.Crec:=KatMc.cGroupMC;
TreeMc.Node:=0;
Insert Current TreeMC;
}
}
cmTreeNodeType:
{
if (Not IsValidAll(tnTreeMC1)) then
TreeSetNodeType(tGrMc,ntfText,'bmpTextCatal')
! TreeSetNodeType(tGrMc,ntfText)
else
{
if(TreeNodeIsOpen(tGrMc)) then
TreeSetNodeType(tGrMc,ntfOpen,'bmpOpenCatal');
! TreeSetNodeType(tGrMc,ntfOpen);
else
TreeSetNodeType(tGrMc,ntfClose,'bmpCloseCatal');
! TreeSetNodeType(tGrMc,ntfClose);
}
}
cmTreeTop:
{
CurOwner:=0;
}
cmTreeDown:
{
CurOwner:=TreeMC.Nrec;
}
cmTreeUp:
{
CurOwner:=TreeMC.Crec;
}
End;
End.
Добавлено: 01 авг 2006, 13:50
evchic
Помогите пожалуйста разобраться:
Есть 2 таблицы
1 Rols
Nrec CEX Line
2 spRols
Nrec cRols Name
Нужно получить 3 уровня ирархии
Rols.CEX
I_____Rols.Line
I I________SpRols.Name
I I________SpRols.Name
I I
I Rols.Line
I I________SpRols.Name
Rols.Cex
I_____Rols.Line
I I________SpRols.Name
Ну и так далее!!!
Добавлено: 01 авг 2006, 13:50
evchic
Помогите пожалуйста разобраться:
Есть 2 таблицы
1 Rols
Nrec CEX Line
2 spRols
Nrec cRols Name
Нужно получить 3 уровня ирархии
Rols.CEX
I_____Rols.Line
I I________SpRols.Name
I I________SpRols.Name
I I
I Rols.Line
I I________SpRols.Name
Rols.Cex
I_____Rols.Line
I I________SpRols.Name
Ну и так далее!!!
Добавлено: 01 авг 2006, 13:51
evchic
Помогите пожалуйста разобраться:
Есть 2 таблицы
1 Rols
Nrec CEX Line
2 spRols
Nrec cRols Name
Нужно получить 3 уровня ирархии
Rols.CEX
I_____Rols.Line
I I________SpRols.Name
I I________SpRols.Name
I I
I Rols.Line
I I________SpRols.Name
Rols.Cex
I_____Rols.Line
I I________SpRols.Name
Ну и так далее!!!