//Soondy @Champway.GuangZhou
实在记不得出处了,前段时间在网上看到有关探讨复制结构类似的表之间的记录的问题.下文便是汇总的一些方法.
当我看完最后一种方法的时候,也就是使用Axapta AOT Map的方法.引发了我的思考..
呵呵,顺手牵羊或许是最简便而高效的做法,先睹为快吧.

方法1 看RecordOperation.xpo
Static Common RecordCopy(Common _from,Common _to)
         {
             Dictionary      dict;
             DictTable       dictTableFrom;
             DictTable       dictTableTo;
             DictField       dictFieldFrom;
             DictField       dictFieldTo;
             Integer         recCnt;
             ;
             dictTableFrom = new DictTable(_from.TableId);
             dictTableTo = new DictTable(_to.TableId);
             for (recCnt = 1;recCnt <= dictTableTo.fieldCnt();recCnt ++)
             {
                 dictFieldTo = dictTableTo.fieldObject(dictTableTo.fieldCnt2Id(recCnt));
                 if (!dictFieldTo.isSystem())
                 {
                     if (dictFieldTo.name() == "oldRecId")
                         dictFieldFrom = dictTableFrom.fieldObject(dictTableFrom.fieldName2Id("RecId"));
                     else
                         dictFieldFrom = dictTableFrom.fieldObject(dictTableFrom.fieldName2Id(dictFieldTo.name()));
                     if (dictFieldFrom && dictFieldFrom.type() == dictFieldTo.type())
                     {
                         _to.(dictFieldTo.id()) = _from.(dictFieldFrom.id());
                     }
                 }
             }
             return _to;
         }
 

方法2:
要把这些表放到同一个Map中,并建立字段的映射:

static void CopyData(Args _args)
{
JournalTableMap journalTableMapCopyFrom;
JournalTableMap journalTableMapCopyTo;
InventJournalTable inventJournalTable;
ProdJournalTable   prodJournalTable;
;

select firstonly inventJournalTable
where inventJournalTable.JournalId == '000010_080';

journalTableMapCopyFrom = inventJournalTable;
journalTableMapCopyTo = prodJournalTable;
journalTableMapCopyTo.data(journalTableMapCopyFrom);

print journalTableMapCopyTo.journalId;
pause;

}

SoondyXUE:

建一个对象,可认为是容器,雷同表拥有一些字段,包含表A和表B 对应字段,对象也有方法,即可以在表A和B之间复制数据的方法,然后,把表A查询出来的数据放到这个对象里,调用这个对象的复制数据方法就可以完成数据复制到表B了.

其实这个对象就是axapta里面的Map,不过Axapta的Map不是实际上的Table.通过Table Brower可以见到,并不存储真实数据于其中,我认为可以理解为Temp Table.