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 get input from user using Dialog

This is my Table

 Bill_TableData

Step 1.First we have to create Dialog object for the Dialog Class.

Step 2.Then create object for Dialog group and Dialog field.

Step 3.Use extendedTypeStr for every dialog field

CODE:

static void SQLNameByID(Args _args)

{

Bill_TabMethod btm;

Dialog dialog;

dialogGroup dialogGroup;

dialogField dialogField;

dialog = new Dialog(“Johnkrish Dialog”);

dialogGroup = dialog.addGroup(“Customer Name”);

// while select * from btm

dialogField = dialog.addField(extendedTypeStr(CustName));

if (dialog.run())

{

while select * from btm

where btm.CustName==dialogField.value()

Box::info(btm.ItemName);

}

}

Step 4. Now run the code the Dialog will appear

DialogInputDialogOutput

Step 5. Input the Customer name then click OK. It will give the output of Item name as Keyboard

for the given Customer name Gopal

Yes you have done…