I want to display all the field labels of invent table. If the field doesn’t have any label, i have to find the field EDT and i have to print that label. Please any one can help me.
Please add a tag with your version of AX; different versions have different capabilities.
Hi Sekhar
I hope it will helpful for u as per ur req
TreeNode treenode = treeNode::findNode(@"\Data Dictionary\Tables\InventTable\Fields");
TreeNodeIterator treeNodeIterator;
TreeNode Flds;
NoYes visibleProp;
str properties;
str extendedDataType;
;
treeNodeIterator = treenode.AOTiterator();
Flds = treeNodeIterator.next();
while(Flds)
{
if(Flds.AOTgetProperty(‘Label’) != ‘’)
{
info(strfmt(“Field with Label %1”, Flds.treeNodeName()));
}
else
{
properties = Flds.AOTgetProperties();
extendedDataType = findProperty(properties, “ExtendedDataType”);
info(strfmt("Field without label = %1 and EDT = %2 ", Flds.treeNodeName(),extendedDataType));
}
Flds = treeNodeIterator.next();
}
2012 R2
You can use DictTable / DictField classes. Like this:
SysDictTable dictTable = new SysDictTable(tableNum(InventTable));
SysDictField dictField;
FieldId fieldId = dictTable.fieldNext(0);
while (fieldId)
{
dictField = dictTable.fieldObject(fieldId);
// Get label
dictField.label();
fieldId = dictTable.fieldNext(fieldId);
}
Hi Rajendra,
Thank you for your kind reply.
In the above code i’m getting EDT name if label is not there. but i want EDT label name.
Thank you!
Check once
TreeNode treenode = treeNode::findNode(@"\Data Dictionary\Tables\InventTable\Fields");
TreeNodeIterator treeNodeIterator;
TreeNode edtTreeNode;
TreeNode Flds;
NoYes visibleProp;
str properties,edtProperties;
str extendedDataType,edtLabelName;
;
treeNodeIterator = treenode.AOTiterator();
Flds = treeNodeIterator.next();
while(Flds)
{
if(Flds.AOTgetProperty(‘Label’) != ‘’)
{
info(strfmt(“Field with Label %1”, Flds.treeNodeName()));
}
else
{
properties = Flds.AOTgetProperties();
extendedDataType = findProperty(properties, “ExtendedDataType”);
edtTreeNode = treeNode::findNode(@"\Data Dictionary\Extended Data Types"+extendedDataType+"");
edtProperties = edtTreeNode.AOTgetProperties();
edtLabelName = findProperty(edtProperties, “Label”);
info(strfmt(“Field without label = %1 and EDT = %2 EDT Label Name =%3”, Flds.treeNodeName(),extendedDataType,edtLabelName));
}
Flds = treeNodeIterator.next();
}
Dear Rajendra
It’s working. Thank you so much.
Click on ,this helped me on the solution
Can you please mark which reply/replies answered your question? (“This helped me” link.)
It will help others looking at this thread.
static void labelName(Args _args)
{
SysDictTable dictTable = new SysDictTable(tableNum(InventTable));
SysDictField dictField;
TreeNode treeNode,edtTree;
treeNode fields,field;
str label,extendedDataType,properties,fieldName,edtProperties;
TreeNode t = TreeNode::findNode(@"\Data Dictionary\Tables").AOTfindChild(“InventTable”);
TreeNode edt = TreeNode::findNode(@"\Data Dictionary\Extended Data Types");
FieldId fieldId = dictTable.fieldNext(0);
while (fieldId)
{
dictField = dictTable.fieldObject(fieldId);
if (dictField.isSql() && !dictField.isSystem())
{
fieldName = dictField.name();
treeNode = dictField.treeNode();
label = SysLabel::labelId2String(treeNode.AOTgetProperty(strFmt(“Label”)));
if(label)
{
info(strFmt("%1",label));
}
else if(!label)
{
fields = t.AOTfindChild(“Fields”);
field =fields.AOTfindChild(fieldName);
properties = field.AOTgetProperties();
extendedDataType = findProperty(properties, “ExtendedDataType”);
if(extendedDataType)
{
edtProperties = edt.AOTfindChild(extendedDataType).AOTgetProperties();
label = findProperty(edtProperties,“Label”);
if(label)
{
info(strfmt("%1 ",SysLabel::labelId2String2((label), ‘en-us’)));
}
else
{
info(strFmt("%1",fieldName));
}
}
else
{
info(strFmt("%1",fieldName));
}
}
}
fieldId = dictTable.fieldNext(fieldId);
}
}