class TestDialogClass
{
DialogField fromDate, toDate;
FromDate fDate;
ToDate tDate;
}
----
protected void dialog()
{
Dialog dialog;
DialogField field;
;
dialog = new Dialog("My Dialog");
field = dialog.addField(extendedTypeStr(VendAccount)); // add EmplId field
dialog.run(); // show
if (dialog.closedOK())
{
info(field.value());
}
}
----
public static void main(Args args)
{
TestDialogClass tClass = new TestDialogClass();
tClass.dialog();
}
This blog is for Dynamics AX (AXAPTA) Developers,this will help you for your development issues. This site contains some Microsoft Dynamics AX X++ Codes for use in your day to day use.
27 July 2012
03 July 2012
Full Text Index in AX 2012 – X++
A full text index contains location information about each significant word in a string field of a table. Some queries can use this information to run more efficiently and complete much sooner. These are queries that search for words that are embedded in the middle of string fields
A table can have a full text index only if the TableGroup property is set to Main or Group on the table.
You can create a maximum of one full text index per table.
static void GmFTIndexQueryJob6(Args _args)
{
FtiTable recFtiTable; // Specified in the prerequisite topic.
Query query2;
QueryBuildDataSource queryBDSource3;
QueryBuildRange queryBRange4;
QueryRun queryRun5;
print "Start the job.";
// Ensure the proper test data is in the table.
delete_from recFtiTable;
recFtiTable.Field1 = "Shine on you crazy diamond.";
recFtiTable.Field2 = "Record 1.";
recFtiTable.insert();
recFtiTable.Field1 = "And if there is no room upon the hill.";
recFtiTable.Field2 = "Record 2.";
recFtiTable.insert();
// Construct and run a query that uses
// the QueryRangeType::FullText enum value.
query2 = new Query();
queryBDSource3 = query2.addDataSource(tableNum(FtiTable));
queryBRange4 = queryBDSource3.addRange(fieldNum(FtiTable, Field1));
queryBRange4.rangeType(QueryRangeType::FullText);
// The space character is treated as a Boolean OR.
queryBRange4.value("diamond unfounded");
// Loop through the records that are returned by the query.
queryRun5 = new QueryRun(query2);
while (queryRun5.next())
{
recFtiTable = queryRun5.get(tableNum(FtiTable));
print "--------";
print "Field1 == " + recFtiTable.Field1;
print "Field2 == " + recFtiTable.Field2;
}
print "End the job.";
pause;
}
A table can have a full text index only if the TableGroup property is set to Main or Group on the table.
You can create a maximum of one full text index per table.
static void GmFTIndexQueryJob6(Args _args)
{
FtiTable recFtiTable; // Specified in the prerequisite topic.
Query query2;
QueryBuildDataSource queryBDSource3;
QueryBuildRange queryBRange4;
QueryRun queryRun5;
print "Start the job.";
// Ensure the proper test data is in the table.
delete_from recFtiTable;
recFtiTable.Field1 = "Shine on you crazy diamond.";
recFtiTable.Field2 = "Record 1.";
recFtiTable.insert();
recFtiTable.Field1 = "And if there is no room upon the hill.";
recFtiTable.Field2 = "Record 2.";
recFtiTable.insert();
// Construct and run a query that uses
// the QueryRangeType::FullText enum value.
query2 = new Query();
queryBDSource3 = query2.addDataSource(tableNum(FtiTable));
queryBRange4 = queryBDSource3.addRange(fieldNum(FtiTable, Field1));
queryBRange4.rangeType(QueryRangeType::FullText);
// The space character is treated as a Boolean OR.
queryBRange4.value("diamond unfounded");
// Loop through the records that are returned by the query.
queryRun5 = new QueryRun(query2);
while (queryRun5.next())
{
recFtiTable = queryRun5.get(tableNum(FtiTable));
print "--------";
print "Field1 == " + recFtiTable.Field1;
print "Field2 == " + recFtiTable.Field2;
}
print "End the job.";
pause;
}
28 June 2012
Models and Model store in AX 2012
Models and Model files in AX 2012
Models are a logical group of elements like tables and classes. In AX 2012 elements can be group and store in the model file. Model files are easy to create, export and import and this can be uninstlled from system when not required.
Create a new model files
Step 1: goto command prompt
Cd c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AXUtil.exe Create /Model:NewCustomer /Layer:USR
Export a model file
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AxUtil.exe export /file:d:\Modificatoins.axmodel /model:NewCustomer
Delete a model file
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AxUtil.exe Delete /model:NewCustomer
Import a model file
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AXUtil.exe import /file:d:\Modificatoins.axmodel
Model store
Export model store:
Export-AXModelStore -File "E:\R3ModelStore.axmodelstore"
Import model store:
Open the Microsoft Dynamics AX Management Shell.
Import-AXModelStore -File "E:\R3ModelStore.axmodelstore"
Please click here
Models are a logical group of elements like tables and classes. In AX 2012 elements can be group and store in the model file. Model files are easy to create, export and import and this can be uninstlled from system when not required.
Create a new model files
Step 1: goto command prompt
Cd c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AXUtil.exe Create /Model:NewCustomer /Layer:USR
Export a model file
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AxUtil.exe export /file:d:\Modificatoins.axmodel /model:NewCustomer
Delete a model file
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AxUtil.exe Delete /model:NewCustomer
Import a model file
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AXUtil.exe import /file:d:\Modificatoins.axmodel
Model store
Export model store:
Export-AXModelStore -File "E:\R3ModelStore.axmodelstore"
Import model store:
Open the Microsoft Dynamics AX Management Shell.
Import-AXModelStore -File "E:\R3ModelStore.axmodelstore"
Please click here
09 June 2012
X++ code to write data to XML File in Job
static void CreateXmlPurch(Args _args)
{
XmlDocument xmlDoc; //to create blank XMLDocument
XmlElement xmlRoot; // XML root node
XmlElement xmlField;
XmlElement xmlRecord;
XMLWriter xmlWriter;
InventTable inventTable;
DictTable dTable = new DictTable(tablenum(PurchTable));
DictField dField;
int i, fieldId;
str value;
PurchTable purch;
//#InventTags
;
xmlDoc = XmlDocument::newBlank();
xmlRoot = xmlDoc.createElement("Purch");//#ItemRootNode);
// Loop through all the records in the inventTable
while select purch
where purch.PurchStatus == PurchStatus::Backorder
{
// Create a XmlElement (record) to hold the
// contents of the current record.
xmlRecord = xmlDoc.createElement("Records");//#ItemRecords);
// Loop through all the fields in the record
for (i=1; i<=dTable.fieldCnt(); i++)
{
fieldId = dTable.fieldCnt2Id(i);
// Find the DictField object that matches
// the fieldId
dField = dTable.fieldObject(fieldId);
// Skip system fields
if (dField.isSystem())
continue;
// Create a new XmlElement (field) and
// have the name equal to the name of the
// dictField
xmlField = xmlDoc.createElement(dField.name());
// Convert values to string. I have just added
// a couple of conversion as an example.
// Use tableName.(fieldId) instead of fieldname
// to get the content of the field.
switch (dField.baseType())
{
case Types::Int64 :
value = int642str(purch.(fieldId));
break;
case Types::Integer :
value = int2str(purch.(fieldId));
break;
default :
value = purch.(fieldId);
break;
}
// Set the innerText of the XmlElement (field)
// to the value from the table
xmlField.innerText(value);
// Append the field as a child node to the record
xmlRecord.appendChild(xmlField);
}
// Add the record as a child node to the root
xmlRoot.appendChild(xmlRecord);
}
// Add the root to the XmlDocument
xmlDoc.appendChild(xmlRoot);
// Create a new object of the XmlWriter class
// in order to be able to write the xml to a file
xmlWriter = XMLWriter::newFile(@"c:\PurchaseOrders.xml");
// Write the content of the XmlDocument to the
// file as specified by the XmlWriter
xmlDoc.writeTo(xmlWriter);
//Open the file in Internet Explorer
WINAPI::shellExecute("c:\PurchaseOrders.xml");
}
{
XmlDocument xmlDoc; //to create blank XMLDocument
XmlElement xmlRoot; // XML root node
XmlElement xmlField;
XmlElement xmlRecord;
XMLWriter xmlWriter;
InventTable inventTable;
DictTable dTable = new DictTable(tablenum(PurchTable));
DictField dField;
int i, fieldId;
str value;
PurchTable purch;
//#InventTags
;
xmlDoc = XmlDocument::newBlank();
xmlRoot = xmlDoc.createElement("Purch");//#ItemRootNode);
// Loop through all the records in the inventTable
while select purch
where purch.PurchStatus == PurchStatus::Backorder
{
// Create a XmlElement (record) to hold the
// contents of the current record.
xmlRecord = xmlDoc.createElement("Records");//#ItemRecords);
// Loop through all the fields in the record
for (i=1; i<=dTable.fieldCnt(); i++)
{
fieldId = dTable.fieldCnt2Id(i);
// Find the DictField object that matches
// the fieldId
dField = dTable.fieldObject(fieldId);
// Skip system fields
if (dField.isSystem())
continue;
// Create a new XmlElement (field) and
// have the name equal to the name of the
// dictField
xmlField = xmlDoc.createElement(dField.name());
// Convert values to string. I have just added
// a couple of conversion as an example.
// Use tableName.(fieldId) instead of fieldname
// to get the content of the field.
switch (dField.baseType())
{
case Types::Int64 :
value = int642str(purch.(fieldId));
break;
case Types::Integer :
value = int2str(purch.(fieldId));
break;
default :
value = purch.(fieldId);
break;
}
// Set the innerText of the XmlElement (field)
// to the value from the table
xmlField.innerText(value);
// Append the field as a child node to the record
xmlRecord.appendChild(xmlField);
}
// Add the record as a child node to the root
xmlRoot.appendChild(xmlRecord);
}
// Add the root to the XmlDocument
xmlDoc.appendChild(xmlRoot);
// Create a new object of the XmlWriter class
// in order to be able to write the xml to a file
xmlWriter = XMLWriter::newFile(@"c:\PurchaseOrders.xml");
// Write the content of the XmlDocument to the
// file as specified by the XmlWriter
xmlDoc.writeTo(xmlWriter);
//Open the file in Internet Explorer
WINAPI::shellExecute("c:\PurchaseOrders.xml");
}
25 May 2012
Change the table properties by using x++ code
Here I am changing the Table property is called CacheLookup to "EntireTable"
static void SetTableCacheProperties(Args _args)
{
xInfo xInfo;
treeNode node;
treeNode childNode;
treenodeIterator nodeIterator;
str properties;
str tables;
str TableCache = "EntireTable";
AsciiIo readFile;
str line;
container fileRecord;
str tablePath;
;
readFile = new AsciiIo("F:\\Tables.txt",'R');
fileRecord = readFile.read();
while(fileRecord)
{
xInfo = new xInfo();
node = xInfo.rootNode().AOTfindChild("Data Dictionary");
line = con2str(fileRecord);
node = node.AOTfindChild("Tables");
childNode = node.AOTfindChild(line);
tables = childNode.treeNodeName();
if(tables == line)
{
properties = setProperty(childNode.AOTgetProperties(), 'CacheLookup', TableCache);
info(properties);
childNode.AOTsetProperties(properties);
// instead of above 3 lines can write like this //// childNode.AOTsetProperty('CacheLookup', 'EntireTable');
childNode.AOTsave();
}
fileRecord = readFile.read();
}
childNode.AOTrefresh();
}
static void SetTableCacheProperties(Args _args)
{
xInfo xInfo;
treeNode node;
treeNode childNode;
treenodeIterator nodeIterator;
str properties;
str tables;
str TableCache = "EntireTable";
AsciiIo readFile;
str line;
container fileRecord;
str tablePath;
;
readFile = new AsciiIo("F:\\Tables.txt",'R');
fileRecord = readFile.read();
while(fileRecord)
{
xInfo = new xInfo();
node = xInfo.rootNode().AOTfindChild("Data Dictionary");
line = con2str(fileRecord);
node = node.AOTfindChild("Tables");
childNode = node.AOTfindChild(line);
tables = childNode.treeNodeName();
if(tables == line)
{
properties = setProperty(childNode.AOTgetProperties(), 'CacheLookup', TableCache);
info(properties);
childNode.AOTsetProperties(properties);
// instead of above 3 lines can write like this //// childNode.AOTsetProperty('CacheLookup', 'EntireTable');
childNode.AOTsave();
}
fileRecord = readFile.read();
}
childNode.AOTrefresh();
}
How to read data from text (.txt) file with AsciiIo
Click here to get that link
void method1()
{
AsciiIo readFile;
str line;
container fileRecord;
;
readFile = new AsciiIo("C:\\test.txt" , 'R');
readFile.inFieldDelimiter("1234567890abcdefghijklmnop");
fileRecord = readFile.read();
while (fileRecord)
{
line = con2str(fileRecord);
info(line);
fileRecord = readFile.read();
}
}
void method1()
{
AsciiIo readFile;
str line;
container fileRecord;
;
readFile = new AsciiIo("C:\\test.txt" , 'R');
readFile.inFieldDelimiter("1234567890abcdefghijklmnop");
fileRecord = readFile.read();
while (fileRecord)
{
line = con2str(fileRecord);
info(line);
fileRecord = readFile.read();
}
}
Subscribe to:
Posts (Atom)
Service class to get the selected record and deleted matching records and refresh the form data source in D365 F&O
[DataContractAttribute] class ABCUserProfilesBulkDeleteContract { UserId userId; [DataMemberAttribute('UserId')] pu...
-
Please click here to access Custom Workflow step by step process:
-
public InventQty onHandInventory(ItemId itemId, InventSiteId inventSiteId,InventLocationId inventLocation) { InventOnhand inventOnh...
-
1. In classDeclaration extend SrsReportDataProviderPreProcess instead of SrsReportDataProviderBase 2. Temp table properties should b...

