Как я могу получить и показать поля, которые являются частью связи таблицы?

У меня есть таблица TableB с отношением TableRel к другой таблице TableA. Это отношение определяется как TableA.FieldA == TableB.FieldB

Я знаю, как получить имя отношения с помощью метода класса DictTable.relation():

DictTable dt;

dt = new DictTable(tableNum(MyTable));
info(strFmt("%1" , dt.relation(i)));

Можно ли получить и показать поля отношения?

В моем случае я ищу TableA.FieldA == TableB.FieldB. Я не знаю, существует ли для этого способ.


person ulisses    schedule 15.04.2015    source источник


Ответы (2)


Я предполагаю, что вы пытаетесь увидеть поля, составляющие указанное отношение.

Для этого вы используете классы DictRelation и DictField. Создайте новый DictRelation на основе таблицы, а затем используйте loadTableRelation (), чтобы указать связанную таблицу. Создайте новые поля DictFields и используйте метод DictRelation.lineExternTableValue (), чтобы указать конкретные поля:

DictRelation dr;
DictField   Field; 
DictField   RelatedField;
int         RelationIndex = 1;

dr = new DictRelation(tableNum(InventDim));
dr.loadTableRelation(tableNum(EcoResColor));
info(strFmt("%1", tableId2name(dr.externTable())));

Field = new DictField(tableNum(InventDim), dr.lineTableValue(RelationIndex));
RelatedField = new DictField(tableNum(EcoResColor), dr.lineExternTableValue(RelationIndex));

info(strFmt("%1 related to %2", Field.name(), RelatedField.name()));
person Spencer Kershaw    schedule 15.04.2015
comment
Хорошо, попробую эту помощь! - person ulisses; 15.04.2015
comment
Спасибо, Спенсер Кершоу, ваш ответ мне очень помог! - person ulisses; 16.04.2015

Ответ Спенсера почти правильный. Строка ниже

Поле = новый DictField (tableNum (InventDim), dr.lineExternTableValue (RelationIndex));

Должно быть

Поле = новый DictField (tableNum (InventDim), dr.lineTableValue (RelationIndex));

person mirsik    schedule 02.06.2015