0

AX 允许将字段组(例如维度)定义为扩展数据类型中的数组。如何获取数组元素信息,例如标签和基本类型?

代码 :

 tID = dict.tableName2Id('CustTable');
counter = 0;
dt = new DictTable(tID);
if (dt)
{
    counter = dt.fieldNext(counter);
    while (counter)
    {
        df = dt.fieldObject(counter);
        arrSize = df.arraySize();
        if (df && arrSize > 1)
        {
            // Field group, get array elements and types ??

        }
        counter = dt.fieldNext(counter);
    }
}

提前致谢。

4

2 回答 2

2

我不确定您所说的字段组是什么意思,但是 Array 的每个成员都将属于同一类型。

df.type();

或者

df.TypeId()

取决于您要查找的“类型”。

要获取标签,请传递数组元素的数量

for(i=i;i<=arrSize;i++)
{
    print df.label(i);
}

不同寻常的是,这在 msdn http://msdn.microsoft.com/en-us/library/aa556779(v=ax.50).aspx中有详细记录

于 2013-02-15T12:29:24.933 回答
1

我在 Ax2012 工作,我需要一个将字段组转换为设置的解决方案。我希望会有所帮助。

private Set fieldGroupToSet(TableId _tableId, FieldGroupName _fieldGroupName)
{
    Set             retSet;

    DictTable       dTable;
    DictField       dField;
    DictFieldGroup  dFieldGroup;

    int             fieldId;
    int             counter;
    int             fieldCnt;
    ;

    dTable = new DictTable(_tableId);
    retSet = new Set(Types::String);    
    if (dTable)
    {
        for(counter = 1; counter <= dTable.fieldGroupCnt(); counter++)
        {
            if(_fieldGroupName == dTable.fieldGroup(counter))
            {
                dFieldGroup = new DictFieldGroup(_tableId, _fieldGroupName);
                if(dFieldGroup)
                {
                    for (fieldCnt=1; fieldCnt <= dFieldGroup.numberOfFields(); fieldCnt++)    
                    {
                        fieldId = dFieldGroup.field(fieldCnt);
                        dField = new DictField(_tableId, FieldId);
                        if(dField)
                        {
                            retSet.add(dField.name());
                        }
                    }
                }
            }
        }
    }
    return retSet;
}
于 2013-04-18T08:40:02.537 回答