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

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

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

galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

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

Сообщение 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
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

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

Сообщение Screw »

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

Кстати, спасибо за примеры и иллюстрации.
Виталий
Ответить