There is again small tips. Let me share you again scenario. Suppose you have to show customer Sale With customer group level. And group footer want to sum of Sales of that group. Now requirement is that customer with certain sub classification will skip in group sum. For example those customer who are on hold or blocked will not shown in report group sum, but shown in report detail
I was developing RDP based reports. So I add a int field in table. So I can mark specific record need to skip at group level sum.
I update the following SSRS expression to skip certain records at group level.
=Sum(iif(Fields!Flag.Value= 0, Cdbl(Fields!Value.Value), 0.0),”Group Name”)
Today I have small tip. Let me share a scenario. Suppose you have to display Customer group as report level group and customer at detail level who did purchased products from your organization in given period of time.
Serial number on detail level can be achieved by RowNumber(“Scope Name”)
But serial number shown on Group level is tricky because RowNumber not works there. For example in above mention scenario, Client wants serial number on Customer Group instead of Customer at detail level.
I used following single line SSRS expression helps me to achieve this.
Let me share you a small tip, During customization We extend out of box Enum for classification. Later client requirement is extensive usage of new Values for classification. For adding new values in enum results dependency on technical person . So we did customization and provide form and custom table so he can create number of values as he want. But now next challenge was, copy enum values and labels in Custom table, So He can use these value instead create again. I used following code snippet to copy data from Enum and insert into Custom table. Hopes this helps.
EnumId enumId = enumNum(LedgerPostingType);
DictEnum dictEnum = new DictEnum(enumId);
int _NoOfValueInEnum = dictEnum.values();
for(counter = 0; counter < _NoOfValueInEnum; counter ++)
_header.ReportHeaderCode = dictEnum.index2Label(counter);
_header.Description = dictEnum.index2Label(counter);
_header.EnumValue = dictEnum.index2Value(counter);
Microsoft just release the white paper about system requirement of Dynamics 365 for Finance and Operations and Enterprise edition In short Dynamics Ax 7 on premises.
You can download it from here
Recently I complete the custom Inquiry for Dynamics Ax 2012 R3. That customization is extensive and based on Tree control. Now I did experiment with Tree view control in Dynamics 365 for operation and output will share here. For this post I used Dynamics 365 for Operation Update 4 Vm with contoso data.
Suppose we need to build tree Where Sale order Number came as parent and Customer account is as its child node. There is thousand possibilities, but I use simplest way. So first step to add form. Then add tree control it. Set Form Name and Auto declaration property to true. So we can access control in code behind.
Next step is to insert following code snippet initial method.
public class frmTreeViewTest extends FormRun
public void init()
while select * from _Table
// _TreeItemid = SysFormTreeControl::addTreeItem(MyTreeView, _Table.SalesId + " : " + _Table.CustAccount ,FormTreeAdd::Root, _Table.RecId);
_TreeItemid = SysFormTreeControl::addTreeItem(MyTreeView, "Sales Order :" + _Table.SalesId ,FormTreeAdd::Root, _Table.RecId);
SysFormTreeControl::addTreeItem(MyTreeView, " Customer Account : " + _Table.CustAccount ,_TreeItemid , _Table.RecId);
Its works for me.
For rest Limit is only sky. Happy development.
Hi All, I just enjoyed the video by Clients First Business Solutions on excel data export. I think its worth to share
Currently I am writing an Inquiry for Client. For this inquiry I have to use Like operator functionality. For example end user wants to search Sale Orders. For this he/she enters the partial sale order number and Inquiry provides the result.
Microsoft provides “Like operator” functionality , I used it with text box in below code snippet. Suppose strProcumentValue is string edit control with auto declaration true.
select * from _Table where _Table.PurchId like “*” + strProcumentValue.text() +”*”;
if (_Table !=null)
Its works for me,
Relationship between VendInvoiceInfoTable and VendInvoiceJour. Is Parm Id. This problem occurs when we need some customization on vendor Invoice form and values of these fields required in reporting. Due to minor nature no impact on calculation. For getting these fields to VendorInoviceJour required complex customization, God knows what will broke or long way of testing require for it. So best way to fetch it form VendorInvoiceInfoTable.
I test it on SQL Server on contoso data with following Query
select parmid,* from vendinvoicejour where parmid in(
select parmid from VendInvoiceInfoTable where PURCHID=’000003′)
Its works for me.
The Dynamics AX brand has been officially retired by Microsoft. As of July 1, 2017, new customers will not be able to buy Dynamics AX 2012 R3.
Existing client still extended and renew their license. But After 1 July new customer only purchase Dynamics 365 for operations. There is possible release of on premise Dynamics 365 for operations in second Quarter and most probably last quarter of 2017. cover the gap for those who want to purchase dynamics ax instead of Azure or cloud version.
Specially middle east, Pakistan and India market Business owners wants on premise version. Support for existing Dynamics Ax will be continue till 2021.
Existing 2009 version client who wants to upgrade will migrate to Dynamics 365 for operations.
Dynamics Ax brand was originally created in 2006 for AX 4.0 will be closed in July 2017.
Reference : https://ax-dynamics.com/article/the-official-end-of-dynamics-ax
Yesterday I got very interesting issue. So When put filter on color, config, style and size. A strange error occur. Filter works for 99% of records but on 1 percent time out occurs. When we dig deep into issue, we found that End user, used the special character ‘(‘ in style. And when we execute the filter on dim of special character reports goes toward timeout. It means some infinite loop occurs.
Our code snippet was
findOrCreateRange_W(query.dataSourceTable(tableNum(InventDim)), fieldNum(InventDim, InventStyleId)).value(InventDimParm.InventStyleId);
Later we found that queryValue is missing in our statement. That was the reason statement was goes into infinite loop.
The correct statement is below as.
findOrCreateRange_W(query.dataSourceTable(tableNum(InventDim)), fieldNum(InventDim, InventStyleId)).value(queryValue(InventDimParm.InventStyleId));