Иерархический список на основе 2-ух таблиц

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Anton A Bobylev
Сообщения: 2
Зарегистрирован: 15 июн 2005, 00:24
Откуда: Ижевск

Иерархический список на основе 2-ух таблиц

Сообщение 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
..... ну и так далее

Чердак сломал :x не получается. С одной таблицей вроде ясно,
а с двумя ???? Поделитесь плиз опытом
stray
Постоянный гость
Сообщения: 90
Зарегистрирован: 29 мар 2005, 17:49

Сообщение stray »

внешний по первой, внутренний по второй - не подходит?
Anton A Bobylev
Сообщения: 2
Зарегистрирован: 15 июн 2005, 00:24
Откуда: Ижевск

Сообщение Anton A Bobylev »

Все это так, только с подцепкой несовсем ясно
Точно должно быть
t1.field_11 == t2.field_21 and ???

и оброботать события

cmTreeTop: {???}
cmTreeDown : {???}
cmTreeTop: {???}

в этом вся загвоздка
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение 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.
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Сообщение 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

Ну и так далее!!!
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Сообщение 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

Ну и так далее!!!
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Сообщение 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

Ну и так далее!!!
Ответить