如何获取并显示属于表关系的字段?

时间:2015-04-15 13:50:19

标签: reflection axapta x++ relation dynamics-ax-2012

我有一个表格TableB与另一个表TableRelTableA的关系。 此关系定义为TableA.FieldA == TableB.FieldB

我知道如何使用类方法DictTable.relation()获取关系的名称:

DictTable dt;

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

是否可以获取并显示关系的字段?

就我而言,我希望找到TableA.FieldA == TableB.FieldB。我不知道是否存在这样做的方法。

2 个答案:

答案 0 :(得分: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()));

答案 1 :(得分:2)

斯宾塞的答案几乎是正确的。

下面的一行

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

需要

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