Страница 2 из 2

Re: несколько таблиц в Browse

Добавлено: 21 июл 2010, 15:09
galover
Не поленился, накидал тест.
Исходный код (обычный, без cartesian)

Код: Выделить всё

#component "Test"

interface Test;

   table struct local tblKatSopr
   (
      NRec : comp,
      Name : string
   )
   with index
   (
      index1 = NRec(unique)
   );
   
   table struct local tblSpSopr
   (
      NRec  : comp,
      Name  : string,
      cSopr : comp
   )
   with index
   (
      index1 = NRec(unique),
      index2 = cSopr
   );
   
   create view as select
      tblKatSopr.NRec
   from 
      tblKatSopr,
      tblSpSopr
   where
   ((
      tblKatSopr.NRec == tblSpSopr.cSopr
   ));
   
   browse brMain;
      table tblKatSopr;
      fields
         tblKatSopr.Name : [20], protect;
         tblSpSopr.Name  : [20], protect;
   end;
   
   handleEvent
      cmInit:
      {
         insert into tblKatSopr set tblKatSopr.NRec := 1, Name := 'tblKatSopr1';
         insert into tblKatSopr set tblKatSopr.NRec := 2, Name := 'tblKatSopr2';
         
         insert into tblSpSopr set tblSpSopr.NRec := 1, Name := 'tblSpSopr1', cSopr := 1;
         insert into tblSpSopr set tblSpSopr.NRec := 2, Name := 'tblSpSopr2', cSopr := 1;
         insert into tblSpSopr set tblSpSopr.NRec := 3, Name := 'tblSpSopr3', cSopr := 1;

         insert into tblSpSopr set tblSpSopr.NRec := 4, Name := 'tblSpSopr4', cSopr := 2;
         insert into tblSpSopr set tblSpSopr.NRec := 5, Name := 'tblSpSopr5', cSopr := 2;

         insert into tblSpSopr set tblSpSopr.NRec := 6, Name := 'tblSpSopr6', cSopr := 3;
         insert into tblSpSopr set tblSpSopr.NRec := 7, Name := 'tblSpSopr7', cSopr := 3;         
      }
   end;
end.
Результат предсказуемый (как и описано в примере выше)
Изображение
Добавляем атрибут cartesian

Код: Выделить всё

   browse brMain;
      table tblKatSopr, cartesian;
      fields
         tblKatSopr.Name : [20], protect;
         tblSpSopr.Name  : [20], protect;
   end;
То же без вопросов (как и описал в примере выше)
Изображение
Теперь, самое интересное, снимаем подцепку (cartesian остается)

Код: Выделить всё

   create view as select
      tblKatSopr.NRec
   from 
      tblKatSopr,
      tblSpSopr;
Результат такой
Изображение
Про корневую имелось в виду конечно корневая для view

Re: несколько таблиц в Browse

Добавлено: 21 июл 2010, 15:48
Screw
В последнем примере по умолчанию корневым узлом брауза стал первый из описанных в ЛТ. Вот его записи и отображаются. Данные второго узла - текущие.

Кстати, спасибо за примеры и иллюстрации.