Оператор ссылки Назад В начало Вперед

Оператор ссылки работает по описанной ссылочной целостности и позволяет обратиться к полю подчиненной таблицы через поле-ссылку родительской таблицы:

// подразделение, в котором работает сотрудник
Persons.cDepartment->Name;
<оператор-ссылки> =
  <родительская-таблица>.<поле-ссылки>-><подцепляемое-поле>

<родительская-таблица> - имя родительской таблицы.

<поле-ссылки> - поле родительской таблицы, определяющее подцепку подчиненной таблицы (внешний ключ). Для данного поля должна быть описана ссылочная целостность на подчиненную таблицу.

<подцепляемое-поле> - поле подчиненной таблицы, к которому производится обращение по оператору ссылки.

Для каждого оператора ссылки компилятор добавляет в код программы синоним на подцепляемую таблицу и подцепки в соответствии с описанием ссылочной целостности:

<имя-синонима> =
  <родительская-таблица>_<поле-ссылки>_<подцепляемая-таблица>

К синониму можно обращаться по его имени.

Пример

create table Example.KatCity "Города"
  with tableOptions header, journal, corpo
(
  code : integer,
  name : string[80]
);

//-------------------------------------------------------------
create table Example.Route "Маршруты"
  with tableOptions header, journal, corpo
(
  cCity1 : ref(KatCity),
  cCity2 : ref(KatCity),
  name   : string[80]
);

//=============================================================
interface CaseTest;

create view

as select
  *

from
  Route
;

//-------------------------------------------------------------
handleEvent
cmInit:
if( getfirst Route = tsOk )
{
  Route.cCity1->Name; 	// обращаемся к полю KatCity.Name
  Route_cCity1_KatCity.Name; // к нему же через имя синонима

  Route.cCity2->Code; 	// обращаемся к полю KatCity.Code
  Route_cCity2_KatCity.code; // к нему же через имя синонима
}

end;
end.