Skip to main content

Dynamics AX in the Field

Have you installed one of the new Report Builders-- version 2 or version 3-- and can't get AX to launch it?
This posting addresses the issue and walks you through the steps to point AX to the new version.
The first step is that you will need to get Report Builder 2.0 or 3.0 installed on your report server. You should be able to access the Report Builder through the Internet Explorer first. In addition, you should already be able to access Report Builder 1.0 from AX. If you don't have this working you will need to revisit the installation guides. Once you have Report Builder 1.0 working through AX and the newer version of Report Builder working outside of AX than you can make the following changes.
Try this in a Test Environment prior to performing this on a production environment and as always make sure you have good backups.
Get into Dynamics AX and access the AOT.
1) Locate the SRSConfiguration class (Classes >>SRSConfiguration).
2) Edit the getReportBuilderUrl method with the following changes:

3) Save the method.
4) Locate the SRSReportBuilder class (Classes >> SRSReportBuilder).
5) Edit the Invoke method to have the following changes:

6) Save the Method.
7) Compile the changes and test.
To learn more about Report Builder and the features each version offers, visit SQL 2008 R2 site here.
Keep in mind that not all features of Report Builder 2.0 or 3.0 may not work with AX 2009. The code changes above are considered code suggestions and qualify as a customization and may not be supported under support agreements.

Popular posts from this blog

Dynamics Axapta: Sales Orders & Business Connector

Well, again folllowing my same idea of writting close to nothing and pasting code, I'll paste in some code to create a sales order from some basic data and the invoice it. I'll try to explain more in the future. AxaptaObject axSalesTable = ax.CreateAxaptaObject("AxSalesTable"); AxaptaRecord rcInventDim = ax.CreateAxaptaRecord("InventDim"); AxaptaRecord rcCustTable = ax.CreateAxaptaRecord("CustTable"); rcCustTable.ExecuteStmt("select * from %1 where %1.AccountNum == '" + MySalesOrderObject.CustAccount + "'"); if (MySalesOrderObject.CurrencyCode.Trim().Length == 0) MySalesOrderObject.CurrencyCode = rcCustTable.get_Field("Currency").ToString().Trim(); string sTaxGroup = rcCustTable.get_Field("taxgroup").ToString().Trim(); //set header level fields axSalesTable.Call("parmSalesName", MySalesOrderObject.SalesName.Trim()); axSalesTable.Call("parmCustAccount", M

Passing values between form and class

Class name is EmplDuplication and Form is EmplTable . void clicked() {    MenuFunction mf;    args args = new Args();    ;     args.record(EmplTable);     mf = new menufunction(identifierstr(EmplDuplication), MenuItemType::Action); mf.run(args); } Meanwhile, in the main() method of the EmplDuplication class, we need to put this Axapta x++ code to get the datasource: static void main(Args args) {     EmplDuplication EmplDuplication; EmplTable localEmplTable; ;     if(args.record().TableId == tablenum(EmplTable)) localEmplTable = args.record();     ... }