Tuesday, December 29, 2015

How to create Full Text Index in Dynamics AX 2012 with Example

How to create Full Text Index in Dynamics AX 2012 with Example

Full text index supports to quickly query words that are embedded in the middle of a string field of a table. Well, this is a very nice enhancement to query on Database table fields for the developers who work with the latest vesion [Microsoft Dynamics AX 2012]
Good thing is we can use this Index on Memo fields and also Extended data type.
Let me explain with an example. Create a new table as shown below and add a new field of type string “Name” to it – On the field use EDT – Name. In the below example, my table Name is FullTextIndexTextTable.
Once you are done with your table, Go to FullTextIndex Node >> Right click and create a new FullTextIndex.
Rename it to JkFullTextIdx. Drag and drop Name field from the fields to the newly created index.
The table with index should look like below.
 FulltextindexTable
Here I’ve created a input string edit control  ( for user input ) and  a submit button.
CODE:
This is a code in form
public class FormRun extends ObjectRun
{
QueryBuildRange qbr;
str localValue;
}
This code is in Form Datasource override mehtod executeQuery()
public void executeQuery()
{
localValue = NameInput.valueStr();
if(localValue)
{
qbr = SysQuery::findOrCreateRange(FullTextIndexTextTable_ds.queryBuildDataSource(),fieldnum(FullTextIndexTextTable, Name));
qbr.rangeType(QueryRangeType::FullText);
qbr.value(localValue);
}
super();
}
This code in Button Clicked() override method
void clicked()
{
super();
FullTextIndexTextTable_ds.executeQuery();
}
Output:
fulltextindexOP

How to create Full Text Index in Dynamics AX 2012 with Example

How to create Full Text Index in Dynamics AX 2012 with Example

Full text index supports to quickly query words that are embedded in the middle of a string field of a table. Well, this is a very nice enhancement to query on Database table fields for the developers who work with the latest vesion [Microsoft Dynamics AX 2012]
Good thing is we can use this Index on Memo fields and also Extended data type.
Let me explain with an example. Create a new table as shown below and add a new field of type string “Name” to it – On the field use EDT – Name. In the below example, my table Name is FullTextIndexTextTable.
Once you are done with your table, Go to FullTextIndex Node >> Right click and create a new FullTextIndex.
Rename it to JkFullTextIdx. Drag and drop Name field from the fields to the newly created index.
The table with index should look like below.
 FulltextindexTable
Here I’ve created a input string edit control  ( for user input ) and  a submit button.
CODE:
This is a code in form
public class FormRun extends ObjectRun
{
QueryBuildRange qbr;
str localValue;
}
This code is in Form Datasource override mehtod executeQuery()
public void executeQuery()
{
localValue = NameInput.valueStr();
if(localValue)
{
qbr = SysQuery::findOrCreateRange(FullTextIndexTextTable_ds.queryBuildDataSource(),fieldnum(FullTextIndexTextTable, Name));
qbr.rangeType(QueryRangeType::FullText);
qbr.value(localValue);
}
super();
}
This code in Button Clicked() override method
void clicked()
{
super();
FullTextIndexTextTable_ds.executeQuery();
}
Output:
fulltextindexOP

Filter and Sort the records of Grid in Ax 2012 with Example



Filter and Sort the records of Grid in Ax 2012 with Example


My Table:Bill_TableData
I have a table named Bill_TabMethod with many fields. But I’am using two fields to filter. one is the name of the customer and another one is the name of the item which is purchased by the customer. Now iam going to filter the records by Customer Name as well as Item name specified by the user. for that i am using one string edit control, one button and one radio button control/
Second thing is for Sorting, for sorting i took one radio button with two items like Ascending and Descending.
CODE:
This is under form
public class FormRun extends ObjectRun
{
QueryBuildRange custname;
QueryBuildRange itemname;
}
Write this code under Datasource init() method
public void init()
{
super();
custname=this.query().dataSourceNo(1).addRange(fieldNum(Bill_TabMethod,CustName));
itemname=this.query().dataSourceNo(1).addRange(fieldNum(Bill_TabMethod,ItemName));
}
Write this code under datasource executeQuery() method
public void executeQuery()
{
if(FilterString.valueStr())
{
if(ChoiceButton.valueStr()==”CustName”)
custname.value(FilterString.valueStr());
else if(ChoiceButton.valueStr()==”ItemName”)
itemname.value(FilterString.valueStr());
}
super();
}
This is under Radiobutton Selection change Override Method
public int selectionChange()
{
int ret;
ret = super();
if(SortButton.valueStr()==”Ascending”)
{
Bill_TabMethod_ds.query().dataSourceNo(1).sortClear();
Bill_TabMethod_ds.query().dataSourceNo(1).addSortField(fieldNum(Bill_TabMethod,CustName),SortOrder::Ascending);
}
else if(SortButton.valueStr()==”Descending”)
{
Bill_TabMethod_ds.query().dataSourceNo(1).sortClear();
Bill_TabMethod_ds.query().dataSourceNo(1).addSortField(fieldNum(Bill_TabMethod,CustName),SortOrder::Descending);
}
SubmitButton.clicked();
return ret;
}
This is under Button Clicked Override method
void clicked()
{
super();
Bill_TabMethod_ds.executeQuery();
}
OUTPUTS:
Filter by Item name                                              
         
filterbyitemname

Filter by Customer Name

 filterbycustname
Sort by Descending                                                    
      
Descending

Sort by Ascending

 Ascending

Example for Table Methods in Ax 2012


Example for Table Methods in Ax 2012


My Table is:
Bill_TableData
I did Two methods Init value, ValidateField.
CODE:
For Init value Method:  Here iam initializing a default value to all new records which is going to create.
public void initValue()
{
super();
this.Vat=14;
}
For Validate Field Method: Here iam restricting each filed by some condition
public boolean validateField(FieldId _fieldIdToCheck)
{
boolean ret;
ret = super(_fieldIdToCheck);
if(ret)
{
switch(_fieldIdToCheck)
{
case fieldNum(Bill_TabMethod,Quatity):
if(this.Quatity <5)
{
error(“Should give more than FIVE”);
this.Quatity=0;
}
break;
case fieldNum(Bill_TabMethod,Price):
break;
case fieldNum(Bill_TabMethod,Discount):
if(this.Discount>45)
{
this.Discount=0;
error(“Discount Should be Less than 45”);
}
break;
}
}
this.TotalAmt=(this.Quatity * this.Price);//-this.Discount;
this.TotalAmt=this.TotalAmt-this.TotalAmt*(this.Discount/100);
this.NetAmt=this.TotalAmt+this.TotalAmt* (this.Vat/100);
return ret;
}
This is the Output Error while checking the condition on Discount Percentage.
TabMethodError

Export a copy of the standard user acceptance testing (UAT) database

 Reference link: Export a copy of the standard user acceptance testing (UAT) database - Finance & Operations | Dynamics 365 | Microsoft ...