【问题标题】:How can I get and show the fields that are part of a table relation?如何获取和显示属于表关系的字段?
【发布时间】:2015-04-15 13:50:19
【问题描述】:

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

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

DictTable dt;

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

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

就我而言,我正在寻找TableA.FieldA == TableB.FieldB。我不知道是否有方法可以做到这一点。

【问题讨论】:

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


    【解决方案1】:

    我假设您正在尝试查看构成指定关系的字段。

    为此,您需要使用 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()));
    

    【讨论】:

    • 好,我试试这个帮助!
    • 感谢 Spencer Kershaw,您的回答对我很有帮助!
    【解决方案2】:

    Spencer 的回答几乎是正确的。下面一行

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

    需要

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多