
If you need to copy data from one table to another table which has similar structure (Eg. to history or logging table) the .data() and buf2Buf() cannot be used.
But we can make some modification to the buf2Buf() method to copy based on field name instead of field Id.
Just create a new static method buf2BufByName() like shown below
//Modified method, copy data from one table to another table with similar structure
static void buf2BufByName(Common _from, Common _to)
{
DictTable dictTableFrom = new DictTable(_from.TableId);
DictTable dictTableTo = new DictTable(_to.TableId);
DictField dictFieldFrom;
FieldId fieldIdFrom = dictTableFrom.fieldNext(0);
FieldId fieldIdTo
;
while (fieldIdFrom && ! isSysId(fieldIdFrom))
{
dictFieldFrom = new DictField(_from.TableId, fieldIdFrom);
if(dictFieldFrom)
{
fieldIdTo = dictTableTo.fieldName2Id(dictFieldFrom.name());
if(fieldIdTo)
_to.(fieldIdTo) = _from.(fieldIdFrom);
}
fieldIdFrom = dictTableFrom.fieldNext(fieldIdFrom);
}
}
Leave a comment