In AX 2012 R2, I’ve create a table where Table Type is tempDB. Later i write a job to build a form from code, populate data from the table method.
When the form run, no data is shown on the form. But, when i query data from infolog, data is shown (successfully insert).
May I know what is the cause that data not show on my form ? Appreciate feedback. Thanks.
static void buildForm(Args _args)
{
Form form;
FormRun formRun;
Args args;
FormBuildDesign formBuildDesign;
FormBuildControl formBuildControl;
FormBuildTabControl formBuildTabControl;
FormBuildTabPageControl formBuildTabPageControl;
FormBuildGridControl formBuildGridControl;
FormBuildDatasource formBuildDatasource;
FormBuildStringControl formString;
DictTable dictTable;
TestTmp testTmp;
form = new Form();
// Add a data source to the form.
dictTable = new DictTable(tablenum(testTmp));
formBuildDataSource = form.addDataSource(dictTable.name());
formBuildDataSource.table(dictTable.id());
testTmp.linkPhysicalTableInstance(testTmp::populateData());
formBuildDesign = form.addDesign(‘design’);
formBuildTabControl = formBuildDesign.addControl(FormControlType::Tab, ‘Tab’);
formBuildTabPageControl = formBuildTabControl.addControl(FormControlType::TabPage, ‘TabPage’);
formBuildGridControl = formBuildTabPageControl.addControl(FormControlType::Grid, ‘Grid’);
formString = formBuildGridControl.addDataField(formBuildDatasource.id(), dictTable.fieldName2Id( “ItemId”));
formString.label(“ItemId”);
formString = formBuildGridControl.addDataField(formBuildDatasource.id(), dictTable.fieldName2Id( “String1”));
formString.label(“String01”);
formString = formBuildGridControl.addDataField(formBuildDatasource.id(), dictTable.fieldName2Id( “String2”));
formString.label(“String02”);
args = new Args();
args.object(form);
formRun = classFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.wait();
//Check if record exist from infolog
while select testTmp
{
info(strFmt("%1",testTmp.ItemId));
}
}
// Populate data method in temporary table
static TestTmp populateData()
{
TestTmp tmp;
InventTable inventTable;
while select firstOnly10 inventTable
{
tmp.clear();
tmp.initValue();
tmp.ItemId = inventTable.ItemId;
tmp.doInsert();
}
return tmp;
}