获取字段组中的字段[ax 2009]

时间:2013-02-15 10:21:57

标签: axapta dynamics-ax-2009 x++

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);
    }
}

提前致谢。

2 个答案:

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

中有详细记载

答案 1 :(得分: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;
}