Book Image

Microsoft Dynamics AX 2009 Development Cookbook

By : Mindaugas Pocius
Book Image

Microsoft Dynamics AX 2009 Development Cookbook

By: Mindaugas Pocius

Overview of this book

Microsoft Dynamics AX provides a comprehensive Enterprise Resource Planning (ERP) solution for mid-size and larger organizations. Dynamics AX implementations are used worldwide by thousands of customers. With the new version - Dynamics AX 2009 - the system is due to expand even more rapidly. Every new implementation requires some level of customization, and all organizations want this to be done to the highest standards using proven approaches. This step-by-step guide will help you manage your company's ERP information and operations efficiently, and solve your business process problems in an effective and quick way. This book focuses on commonly used custom modifications in major Dynamics AX modules. This book contains commonly used bits of code which were real-world tested in at least one successful Dynamics AX implementation. Many of the recipes were deployed in many implementations and even across several versions of Dynamics AX. The examples in this book cover various areas of Dynamics AX to help developers not only learn about programming, but also about the functional side of Dynamics AX. The book should help developers who already know the basics of Dynamics AX programming to step up to the next level. The recipes allow you to look at the development from the perspective of business processes. You will learn to enhance your user interface using various Dynamics AX UI elements. Managing your data and functions will become easier. You will also get numerous development tips and tricks from a Dynamics AX development expert.
Table of Contents (12 chapters)
Microsoft Dynamics AX 2009 Development Cookbook
Credits
About the Author
About the Reviewers
Preface
Index

Using a macro in a SQL statement


In a standard Dynamics AX application, there are macros like InventDimJoin and InventDimSelect, which are reused numerous times across the application. Those macros are actually full or partial X++ SQL queries, which can be called with various arguments. Such approach saves developing time and makes upgrades easier.

In this recipe, we will create a small macro, which holds a single where clause to display only active vendor records. Then, we will create a job which uses created macro for displaying a vendor list.

How to do it...

  1. Open AOT, and create a new macro called VendTableNotBlocked with the following code:

    (%1.Blocked == CustVendorBlocked::No)
  2. In AOT, also create a new job called VendTableMacro with the following code:

    static void VendTableMacro(Args _args)
     {
         VendTable   vendTable;
         ;
     
         while select vendTable
             where #VendTableNotBlocked(vendTable)
         {
             info(strfmt(
                 "%1 - %2",
                 vendTable.AccountNum,
                 vendTable.Name));
         }
     }
  3. Run the job, and inspect the results, as displayed on the screen:

How it works...

First, we define a macro that holds our where clause. Normally, the purpose of defining SQL in a macro is to reuse it a number of times in various places. We use %1 as an argument. More arguments could be used.

Next, we create a job with the select statement. Here, we use the previously created macro in a where clause. We pass vendTable as an argument.

The query works like any other query, but the advantage is that the code in the macro could be reused elsewhere.

Note that although using a macro in a SQL statement can reduce the amount of code, too much code in it might reduce the SQL statement's readability for other developers. So keep it balanced.