Iterating over any table

微笑、不失礼 提交于 2019-12-11 05:14:52

问题


I just started new job where they use dynamics ax 2009. I am new to this technology.

Is there a way in x++ to iterate over any table? I don't know where the data comes from, it's lenght nor field count.

What I mean by that is I need a function that would behave like this

void convert(Table anyTable) 
{
    int i=0; 
    int k=0;
    ;

    for(i; i < anyTable.Lenght; i++)
    {
        for(k; k < anyTable[i].Count; k++) 
        {
            //some xml processing 
        } 
    }
} 

(By Table i mean some kind of parent of all tables). And that basically is my question - is there a parent of all tables or something of such sort that can help me achieve something like this?

I am sorry for formatting, im typing this from mobile device


回答1:


The Common table is the base class for all tables. It does not contain any data. It is primarily used in X++ code to refer to any table in a polymorphic way. Please check Dictionary classes to solve your issue:

void convert(Common _common)
{
    DictTable       dictTable;
    FieldId         fieldId;
    anytype         value;
    ;

    dictTable = new dictTable(_common.TableId);

    if (dictTable)
    {
        while select _common
        {
            fieldId = dictTable.fieldNext(0);

            while (fieldId)
            {
                value = _common.(fieldId);

                //do processing

                fieldId = dictTable.fieldNext(fieldId);
            }
        }
    }
}



回答2:


See this answer. It involves use of class Dictionary and DictTable for reflection.




回答3:


Check out xml() method on Common class, it may help generate your XML representing the current record.



来源:https://stackoverflow.com/questions/44304657/iterating-over-any-table

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!