Показать сообщение отдельно
Старый 02.01.2014, 22:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,644 / 848 (80) +++++++
Регистрация: 28.10.2006
Pawan's Ax blog: How To Iterate all the fields of a table in Ax2012 using x++ code.
Источник: http://pawansaxblog.blogspot.com/201...-table-in.html
==============

In my recent implementation I was having one requirement in this I had to retrieve all the fields of a table and then on certain criteria I had to update these fields in another table. I could do this sing If-else condition but it requires lot of code. So I did it in a better way.

public void updateEstimatesFromCase()
{
CopyEstimates copyEstimates;
SysDictTable dictTable;
SysDictTable caseDictTable;
SysDictTable activityDictTable;
SysDictField dictField;
SysDictField caseDictField;
SysDictField activityDictField;
FieldId fieldId;
FieldId caseFieldId;
FieldId activityFieldId;
CaseDetailBase caseDetailBase = caseDetailBase::find(this.caseId());
CaseTimeEstimatesTable caseTimeEstimatesTable;
ActivityTimeEstimatesTable activityTimeEstimatesTable;
ActivityTimeEstimatesTable buffer;
;

select firstonly caseTimeEstimatesTable
where caseTimeEstimatesTable.CaseDetailBase == caseDetailBase.RecId;

select firstOnly activityTimeEstimatesTable
where activityTimeEstimatesTable.smmActivities == this.smmActivities;

buf2Buf(buffer,activityTimeEstimatesTable);
if (activityTimeEstimatesTable.RecId)
{
activityTimeEstimatesTable.selectForUpdate(true);
activityTimeEstimatesTable.update();
}
caseDictTable = new SysDictTable(caseTimeEstimatesTable.TableId);
dictTable = new SysDictTable(this.TableId);
fieldId = dictTable.fieldNext(0);


while (fieldId)
{
dictField = dictTable.fieldObject(fieldId);
if (dictField.isSql() && !dictField.isSystem())
{
activityTimeEstimatesTable.smmActivities = this.smmActivities;
if (this.(fieldId) && fieldId != fieldNum(copyEstimates, smmActivities))
{

caseFieldId = fieldName2id(tableNum(CaseTimeEstimatesTable),dictField.name());
activityFieldId = fieldName2id(tableNum(ActivityTimeEstimatesTable),dictField.name());
activityTimeEstimatesTable.(activityFieldId) = caseTimeEstimatesTable.(caseFieldId);
if (activityTimeEstimatesTable.RecId)
{
activityTimeEstimatesTable.selectForUpdate(true);
activityTimeEstimatesTable.update();
}
else
{
activityTimeEstimatesTable.insert();
}
}
}
fieldId = dictTable.fieldNext(fieldId);
}
}


Источник: http://pawansaxblog.blogspot.com/201...-table-in.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.