Как я могу получить и показать поля, которые являются частью табличного отношения?
У меня есть стол 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
, Я не знаю, существует ли метод для этого.
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()));
Ответ от Спенсера почти правильный. Строка ниже
Field = new DictField(tableNum(InventDim), dr.lineExternTableValue(RelationIndex));
Должно быть
Field = new DictField(tableNum(InventDim), dr.lineTableValue(RelationIndex));