Wednesday, December 29, 2010

Screencast updates on Dynamics AX Business Intelligence

Microsoft again did a fantastic job by providing us yet another platform. This contains a very focused information over SSRS and AX.

Don't wait! Click here.




Tuesday, December 28, 2010

6 steps to take backup of all the objects from 'user' layer

While working on client side with lot of customizations, someone must take the backup of all the changes which already have done in an application.

A very short way of taking backup from a selected layer is as follows;

1. Create a new project and open it.
2. Click on the Advance filter/Sort for this project, it will open the following screen


Note: Make sure the above options should be selected for this scenario.

3. Click on ‘Select’ button.
4. Remove all the ranges from this query form and add only one range. The form will now looks like this;



5. Press OK, form will be closed
6. Press OK

The new project will contains the entire objects, group by their consecutive groups.

Tuesday, December 21, 2010

Microsoft Dynamics AX Recorded Webcasts

It’s like a dream to have a bulk of videos over Dynamics AX at one place. Advance System Integration did it for us and I am glad to share it with you here
Webcast Title
Topic Area
Recorded Date
Microsoft Dynamics AX 2009General Functional Overview Demo
General AX
October 23, 2008 - Video
Microsoft Dynamics AX 2009General Technical Overview Demo
General AX
November 6, 2008 – Video
Live Webcast: Upgrading to Microsoft Dynamics AX 2009
General AX
November 4, 2009 – Video
Microsoft Dynamics AX 2009Financial Module Demo
Finance
November 20, 2008 – Video
Microsoft Dynamics AX 2009Project Accounting ModuleDemo
Accounting
January 14, 2009 – Video
Microsoft Dynamics AX 2009CRM Module Demo
CRM
June 2, 2010 – Video
Microsoft Dynamics AX 2009CRM Module Demo
CRM
February 25, 2009 – Video
Live Webcast: Microsoft Dynamics AX 2009Inventory Management
Trade & Logistics
October 21, 2009 – Video
Live Webcast: Microsoft Dynamics AX 2009Enterprise Portal
Enterprise Portal
November 18, 2009 – Video
Learn More about Inventory II: A Powerful Extension of the Standard Microsoft Dynamics AX Inventory Module
AX Extension-Inventory Management
April 1, 2009 – VideoMarch 31, 2010 –Video
Learn More about Inventory II: Another look at Inventory II: A Powerful Extension of the Standard Microsoft Dynamics AX Inventory Module from a Financial Users’ Perspective
AX Extension-Inventory Management
May 5, 2010 – Video
AX-SMART Graphical Planning and Scheduling:An integrated drag and drop based planning and scheduling extension for AX production and project modules
AX Extension-Inventory Management
June 23, 2009 –VideoJanuary 13, 2010 –Video
June 16, 2010 – Video
Learn More about TARGITBusiness Intelligence Software
AX Extension – BI
July 15, 2009 – Video
Better and faster decision making is only clicks away in Microsoft Dynamics AX with ASi’s Complete Business Intelligence Suite (Powered by timeXtender)
AX Extension – BI
May 21, 2010 - VideoJuly 23, 2010 - Video

Monday, December 20, 2010

Filter datasources of same table on Tab Pages

I had a requirement to show the filtered data of one table on different tabs within a form. The standard filter functionality in AX forms is a powerful feature. Using this filter functionality in your code is something you'll definitely use at some point in time as a programmer.
Let me explain it with an example; we have a currency table with multiple currencies e.g. EUR and USD. I have two different tabs named ‘EUR’ and ‘USD’ and these will show the respective filtered data from the currency table i.e. EUR tab will show the EUR currency and USD will show the USD currency data.
Add two datasources (CurrencyEUR and CurrencyUSD) on the form of the same table (Currency), after assigning these datasources to the tabpages. You just need to follow the following 3 steps.
Step 1: Declare a class variable
In the ClassDeclaration method of the form, define a range.
QueryBuildRange CurrencyQBREUR;
QueryBuildRange CurrencyQBRUSD;



Step 2: Instantiate the new range.
In the init() method on the datasource of the form, you assign the range to a specific field (after the super call).

DataSource: CurrencyEUR
public void init()
{
super();

CurrencyQBREUR = this.query().dataSourceName('Currency').addRange(fieldnum(Currency, CurrencyCode));
}
DataSource: CurrencyUSD
public void init()
{
super();

CurrencyQBRUSD = this.query().dataSourceName('Currency').addRange(fieldnum(Currency, CurrencyCode));
}

Step 3: In the last step, you assign a value to the range.
This is done in the executeQuery method on the same datasource of the form. Before the super call. Like this:

DataSource: CurrencyEURpublic void executeQuery()
{ ;

CurrencyQBREUR.value(queryvalue('EUR'));

super();
}
DataSource: CurrencyUSDpublic void executeQuery()
{ ;

CurrencyQBRUSD.value(queryvalue('USD'));

super();
}
This can be done in one line of code as well. In the init() method of the form datasource, after the super call, place this code:
this.query().dataSourceName(‘Currency’).addRange(fieldnum(‘Currency’,CurrencyCode)).value(queryvalue('USD'));

But this way, it's fixed. If you choose the 3 step method, you could for example use a variable in the range value. The way to go would be to place an input field on your form. Get the value from it and supply it in the executeQuery() method.
For example like this:
public void executeQuery()
{ ;
CurrencyQBRUSD.value(queryvalue(MyInputField.text()));
super();
}

Just make sure the executeQuery method is executed, thus applying the desired filter (maybe be using a button on your form to activate it).

Suppress the scaling message on AX Reports

While working on AX reports, I got a very powerful and useful feature of AX. When a report doesn't fit on a page, depending on its properties Ax will resize the report.


Now AX will inform you that the report has been rescaled (Report is scaled xx percent to fit to page) and this message is generally not well received by users.
Users are annoyed by the message, they get it every time they run the report, they cannot do anything about it, and they have to click to close the infolog.

In order to get rid of this message on a particular report you can just modify the init() method of that report and add this line of code.
this.printJobSettings().suppressScalingMessage(true);
How about to cut the roots of this message and just change on one place then you can get rid of this message on all the reports rather than to go on each report and modify its init() method.
Go to class SysReportRun, in the Run method, place following code before the call to super:
if(this.printJobSettings())
this.printJobSettings().suppressScalingMessage(true);
Now we don't have to modify each and every report and our users are happy.

Note that you can still override the settings in your report. In some reports this is done by default, like SalesInvoice and SalesConfirm.

Thursday, December 2, 2010

Pack/Unpack Mechanism to reduce the RPC Count for Temporary Table


Many a times it’s becomes our need to use the temporary tables while displaying data either on the forms or dialog forms. We all are aware of how to use temp table in AX and also with this fact that there is always being a performance impact (chattiness between client & server) to insert data in temp table.
We can use pack/unpack mechanism to reduce this chattiness and pack the whole temp table data once on client and use it on the server.
You can use this mechanism like below,
Create a temporary table like in my case I created it with name “ProjTmpBudgetDisplay”
Create a class like in my case I created it with name “ClassTmpBudgetDisplay”


Create a form and override its init() method