Оператор ссылки |
Оператор ссылки работает по описанной ссылочной целостности и позволяет обратиться к полю подчиненной таблицы через поле-ссылку родительской таблицы:
// подразделение, в котором работает сотрудник 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.